This package was created in the context of the GRACeFUL project.
The haskelzinc library defines an interface to the MiniZinc 2.0 constraint proramming language. It provides
- a Haskell abstract syntax tree for the MiniZinc language, with which one can represent MiniZinc models in Haskell
- a pretty printer to print the representation of a MiniZinc model in MiniZinc
- a parser that returns a representation of the solutions obtained by running the MiniZinc model
An additional module gives the possibility to directly get the solutions of a MiniZinc finite domain model. Option for interactive interface is provided, as well as choice between two solvers: the G12/FD built-in solver of FlatZinc and choco3.
- GHC 7.10.3
- MiniZinc 2.0
To use choco solver, also required:
- JDK 8+
- The following jar files (can be also found in the choco/ directory of this repo)
- choco_solver (with dependencies) [http://choco-solver.org/Download?q=releases]
- choco_parser [https://oss.sonatype.org/content/repositories/releases/org/choco-solver/choco-parsers/3.3.3/]
- ANTLR >4.5.2 java runtime binaries [http://www.antlr.org/download.html]
Compatible with Windows and Unix systems.
This library is available on hackage. Use cabal install
.
- Create a file
HZconf/conf.txt
in the same directory level where you want to run your code. - Fill in the corresponding paths by adding the equal sign (=) and the correct path.
MINIZINC_DIR: the directory where mzn2fzn and flatzinc executables are located
CHOCO_PARSER: the path of the choco parser java library
CHOCO_SOLVER: the path of the choco solver java libaray
ANTLR: the path of the antlr java libaray
Example: MINIZINC_DIR = path/to/dir
- MiniZinc annotations
- Set constraints with the choco solver
The assumed name of the flatzinc executable is flatzinc
.
So if you are using fzn-gecode
you may need to make sure
there is a symlink from flatzinc
to fzn-gecode
.
Furthermore the code assumes that flatzinc defaults to
the -b fd
setting. This will be fixed in an upcoming
commit.