Model a problem in Rust, then pick a solver.
What vallmo is
Section titled “What vallmo is”vallmo is a project for combinatorial optimisation software. The aim is simple to state: a Rust programmer reaches for vallmo to model a small problem, then picks a solver to solve it. The core is written in Rust, with Python and C++ bindings. How the bindings will be built has not been decided.
vallmo builds on Campion, a sibling library of combinatorial algorithms and solvers. vallmo depends on Campion; Campion never depends on vallmo.
What is planned
Section titled “What is planned”- Modelling. A Rust modelling interface inspired by MiniZinc and cpmpy. One model can be solved by any of the solvers below.
- FlatZinc. A reader for MiniZinc’s solver-level language, so vallmo can also act as a solver for MiniZinc.
- A constraint programming solver. A readable solver in the mould of Gecode, with Campion’s algorithms turned into propagators.
- A SAT solver. A configurable SAT solver designed with constraint programming in mind, meant to be embedded in other solvers.
- Other solvers. Backends for Gecode and OR-Tools CP-SAT.
- Portfolios. Several solvers working on the same problem and sharing what they find.
The name
Section titled “The name”The name is the Swedish word for poppy. It is written in lowercase: vallmo. Like Campion and Gecode Iris, it is named after a flower.
Status
Section titled “Status”vallmo has just started. Nothing has been released: there are no Rust crates, Python packages or C++ libraries to install, and every interface may change. The source is in the zayenz/vallmo repository on GitHub, which is private for now. This page will link to documentation and releases when they exist.