Shackle is a constraint modelling and rewriting library and compiler framework written in rust. Shackle is still in the early stages of development. Its components are not yet stable and might drastically change.
The compiler tests and the shackle compile command require the upstream
MiniZinc standard library from develop branch.
Set MZN_STDLIB_DIR to MiniZinc's share/minizinc (not the std subdirectory).
The compiler test suite can then be run with:
MZN_STDLIB_DIR=/path/to/share/minizinc cargo test --all-featuresTo compile and solve, use
MZN_STDLIB_DIR=/path/to/share/minizinc cargo run -p shackle-cli -- solve path/to/model.mznOr compile a MiniZinc model to MicroZinc (suffixed with .shackle.mzn):
MZN_STDLIB_DIR=/path/to/share/minizinc cargo run -p shackle-cli -- compile path/to/model.mznThis research was partially funded by the Australian Government through the Australian Research Council Industrial Transformation Training Centre in Optimisation Technologies, Integrated Methodologies, and Applications (OPTIMA), Project ID IC200100009.