What the API feels like
Readable constraints, explicit business rules
SolverForge keeps the model close to the domain. You work with shifts, employees, routes, and scores instead of translating everything into a separate optimization language.
- Constraint Streams for composable rules and score analysis
- Typed Rust models that stay recognizable as application code
- Solver components you can embed in real applications
// Prevent assigning overlapping shifts to the same employee.
let no_overlap = factory
.shifts()
.join(equal(|shift: &Shift| shift.employee))
.filter(|a: &Shift, b: &Shift| {
a.employee.is_some() && a.start < b.end && b.start < a.end
})
.penalize_hard()
.named("No overlap");
// Require every assigned employee to satisfy the shift's required skill.
let required_skill = factory
.shifts()
.join(equal(|shift: &Shift| shift.employee))
.filter(|shift: &Shift, other: &Shift| {
shift.employee == other.employee
&& shift.required_skill.is_some()
&& !shift.employee
.as_ref()
.is_some_and(|employee| employee.skills.contains(&shift.required_skill.unwrap()))
})
.penalize_hard()
.named("Employee skill match");
Examples and companion libraries
Start with a working planner. Extend into product and routing.
Begin with employee scheduling, then add scheduling interfaces through solverforge-ui or travel-time and route modeling through solverforge-maps.
Build your first scheduler
Follow a complete employee scheduling walkthrough with shifts, hard rules, soft preferences, and a live application loop.
Start the tutorialAdd scheduling UI
Use solverforge-ui for scheduling views, frontend primitives, and integration helpers in operational products.
Model routes and travel time
Use solverforge-maps for road-network loading, travel-time matrices, and route geometry in dispatch systems.
In practice
I have incorporated SolverForge in my new Rust application for staff scheduling and it's working like a charm, A+
Fawaz Halwani, Pathologist, The Ottawa Hospital
Public docs and code
Everything important is visible
The docs, APIs, tutorials, and source are public, so you can inspect SolverForge directly before deciding whether it fits your system.
- CLI-first setup with generated project scaffolds
- Reference tutorials for scheduling and routing problems
- Open-source crates and docs you can verify directly