SolverForge

Write constraints like you write code

Build planning software in Rust. Model the domain with ordinary types, express the rules in code, and ship optimization systems without switching to a separate solver language.

Neutral app shell from the CLI Incremental domain generation after scaffolding Step-by-step employee scheduling tutorial

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
constraints.rs
// 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");
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

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