|
1 | 1 | # SolverForge Quickstarts |
2 | 2 |
|
3 | | -This repository contains quickstarts for [SolverForge](https://github.com/SolverForge/solverforge-legacy), an AI constraint solver and framework for Rust and Python. |
4 | | -It shows different use cases and basic implementations of constraint solving. The legacy (Timefold-based) quicktarts have been moved to [legacy](legacy/). |
| 3 | +This repository contains quickstarts for [SolverForge](https://github.com/SolverForge/solverforge), an AI constraint solver and framework for Rust and Python. |
| 4 | +It shows different use cases and basic implementations of constraint solving. |
5 | 5 |
|
6 | 6 | ## Overview |
7 | 7 |
|
8 | | -| Use Case <img width="341" height="1"> | Notable Solver Concepts <img width="541" height="1"> | |
9 | | -|-----------------------------------------------------------------------|----------------------------------------------------------| |
10 | | -| 🚚 <a href="#-vehicle-routing">Vehicle Routing</a> | Chained Through Time, Shadow Variables | |
11 | | -| 🧑💼 <a href="#-employee-scheduling">Employee Scheduling</a> | Load Balancing | |
12 | | -| 🛠️ <a href="#-maintenance-scheduling">Maintenance Scheduling</a> | TimeGrain, Shadow Variable, Variable Listener | |
13 | | -| 🛒 <a href="#-order-picking">Order Picking</a> | Chained Planning Variable, Shadow Variables | |
14 | | -| 👥 <a href="#-meeting-scheduling">Meeting Scheduling</a> | TimeGrain | |
| 8 | +| Use Case <img width="341" height="1"> | Rust | Python (Legacy) | Notable Solver Concepts <img width="541" height="1"> | |
| 9 | +|-----------------------------------------------------------------------|------|-----------------|-----------------------------------------------------| |
| 10 | +| 👋 <a href="#-hello-world">Hello World</a> | 🚧 | ✅ | Basic Planning Problem | |
| 11 | +| 🧑💼 <a href="#-employee-scheduling">Employee Scheduling</a> | ✅ | ✅ | Load Balancing | |
| 12 | +| 🚚 <a href="#-vehicle-routing">Vehicle Routing</a> | 🚧 | ✅ | Chained Through Time, Shadow Variables | |
| 13 | +| 🛠️ <a href="#-maintenance-scheduling">Maintenance Scheduling</a> | 🚧 | ✅ | TimeGrain, Shadow Variable, Variable Listener | |
| 14 | +| 🛒 <a href="#-order-picking">Order Picking</a> | 🚧 | ✅ | Chained Planning Variable, Shadow Variables | |
| 15 | +| 👥 <a href="#-meeting-scheduling">Meeting Scheduling</a> | 🚧 | ✅ | TimeGrain | |
| 16 | +| 📈 <a href="#-portfolio-optimization">Portfolio Optimization</a> | 🚧 | ✅ | Financial Constraints | |
| 17 | +| 🖥️ <a href="#-vm-placement">VM Placement</a> | 🚧 | ✅ | Bin Packing, Resource Allocation | |
15 | 18 |
|
16 | 19 | > [!NOTE] |
17 | 20 | > The implementations in this repository serve as a starting point and/or inspiration when creating your own application. |
18 | 21 | > SolverForge is a library and does not include a UI. To illustrate these use cases a rudimentary UI is included in these quickstarts. |
| 22 | +> |
| 23 | +> **Rust implementations** are native SolverForge applications showcasing zero-erasure architecture. |
| 24 | +> **Python (Legacy)** implementations use the Timefold-based legacy solver and are located in the [legacy/](legacy/) directory. |
19 | 25 |
|
20 | 26 | ## Use cases |
21 | 27 |
|
22 | | -### 🚚 Vehicle Routing |
23 | | - |
24 | | -Find the most efficient routes for vehicles to reach visits, considering vehicle capacity and time windows when visits are available. Sometimes also called "CVRPTW". |
| 28 | +### 👋 Hello World |
25 | 29 |
|
26 | | - |
| 30 | +A minimal example demonstrating the basics of constraint solving with SolverForge. |
27 | 31 |
|
28 | | -- [Run vehicle-routing](legacy/vehicle-routing/README.MD) (Python, FastAPI) |
29 | | -- [Run vehicle-routing (fast)](fast/vehicle-routing-fast/README.MD) (Python, FastAPI) |
30 | | - |
31 | | -> [!TIP] |
32 | | -> <img src="https://docs.timefold.ai/_/img/models/field-service-routing.svg" align="right" width="50px" /> [Check out our off-the-shelf model for Field Service Routing](https://app.timefold.ai/models/field-service-routing). This model goes beyond basic Vehicle Routing and supports additional constraints such as priorities, skills, fairness and more. |
| 32 | +- **Python (Legacy)**: [legacy/hello-world-fast](legacy/hello-world-fast/README.md) |
33 | 33 |
|
34 | 34 | --- |
35 | 35 |
|
36 | 36 | ### 🧑💼 Employee Scheduling |
37 | 37 |
|
38 | 38 | Schedule shifts to employees, accounting for employee availability and shift skill requirements. |
39 | 39 |
|
40 | | - |
| 40 | +- **Rust**: [rust/employee-scheduling](rust/employee-scheduling/README.md) |
| 41 | +- **Python (Legacy)**: [legacy/employee-scheduling-fast](legacy/employee-scheduling-fast/README.md) |
| 42 | + |
| 43 | +--- |
41 | 44 |
|
42 | | -- [Run employee-scheduling](legacy/employee-scheduling/README.MD) (Python, FastAPI) |
43 | | -- [Run employee-scheduling (fast)](fast/employee-scheduling-fast/README.MD) (Python, FastAPI) |
| 45 | +### 🚚 Vehicle Routing |
44 | 46 |
|
45 | | -> [!TIP] |
46 | | -> <img src="https://docs.timefold.ai/_/img/models/employee-shift-scheduling.svg" align="right" width="50px" /> [Check out our off-the-shelf model for Employee Shift Scheduling](https://app.timefold.ai/models/employee-scheduling). This model supports many additional constraints such as skills, pairing employees, fairness and more. |
| 47 | +Find the most efficient routes for vehicles to reach visits, considering vehicle capacity and time windows when visits are available. Sometimes also called "CVRPTW". |
| 48 | + |
| 49 | +- **Python (Legacy)**: [legacy/vehicle-routing-fast](legacy/vehicle-routing-fast/README.md) |
47 | 50 |
|
48 | 51 | --- |
49 | 52 |
|
50 | 53 | ### 🛠️ Maintenance Scheduling |
51 | 54 |
|
52 | 55 | Schedule maintenance jobs to crews over time to reduce both premature and overdue maintenance. |
53 | 56 |
|
54 | | - |
55 | | - |
56 | | -- [Run maintenance-scheduling](legacy/maintenance-scheduling/README.adoc) (Python, FastAPI) |
| 57 | +- **Python (Legacy)**: [legacy/maintenance-scheduling-fast](legacy/maintenance-scheduling-fast/README.md) |
57 | 58 |
|
58 | 59 | --- |
59 | 60 |
|
60 | 61 | ### 🛒 Order Picking |
61 | 62 |
|
62 | 63 | Generate an optimal picking plan for completing a set of orders. |
63 | 64 |
|
64 | | - |
65 | | - |
66 | | -- [Run order-picking](legacy/order-picking/README.adoc) (Python, FastAPI) |
| 65 | +- **Python (Legacy)**: [legacy/order-picking-fast](legacy/order-picking-fast/README.md) |
67 | 66 |
|
68 | 67 | --- |
69 | 68 |
|
70 | 69 | ### 👥 Meeting Scheduling |
71 | 70 |
|
72 | 71 | Assign timeslots and rooms for meetings to produce a better schedule. |
73 | 72 |
|
74 | | - |
| 73 | +- **Python (Legacy)**: [legacy/meeting-scheduling-fast](legacy/meeting-scheduling-fast/README.md) |
| 74 | + |
| 75 | +--- |
| 76 | + |
| 77 | +### 📈 Portfolio Optimization |
| 78 | + |
| 79 | +Optimize investment portfolios to balance risk and return while satisfying various financial constraints. |
| 80 | + |
| 81 | +- **Python (Legacy)**: [legacy/portfolio-optimization-fast](legacy/portfolio-optimization-fast/README.md) |
| 82 | + |
| 83 | +--- |
| 84 | + |
| 85 | +### 🖥️ VM Placement |
| 86 | + |
| 87 | +Optimize the placement of virtual machines across physical servers to maximize resource utilization and minimize costs. |
75 | 88 |
|
76 | | -- [Run meeting-scheduling](legacy/meeting-scheduling/README.adoc) (Python, FastAPI) |
77 | | -- [Run meeting-scheduling (fast)](fast/meeting-scheduling-fast/README.adoc) (Python, FastAPI) |
| 89 | +- **Python (Legacy)**: [legacy/vm-placement-fast](legacy/vm-placement-fast/README.md) |
78 | 90 |
|
79 | 91 | --- |
80 | 92 |
|
|
0 commit comments