Problem submissions for the 2025 MiniZinc Challenge are currently open! See the call for problems for more information.

MiniZinc

MiniZinc is a high-level constraint modelling language that allows you to easily express and solve discrete optimisation problems.

Latest release: 2.9.0 (changelog)

MiniZinc is developed at Monash University with support from OPTIMA.

AimeeAlidaArvilBeulaCiaraColonDarbyDianaDonnaDulceEliasElvieErnstEssieGreenJeradJesseJimmyJodieJulieKatieKeionKelsiKizzyLarryLeafyLloydLymanMableMartyMerleMetroMistiMykelNeliaNevinPaulaSheriTeddyWayne
Table seating allocation
MonTueWedThuFri
Aimee
Night
Evening
Day
Evening
Beula
Evening
Day
Evening
Night
Evening
Ciara
Day
Evening
Night
Darby
Evening
Evening
Night
Ernst
Night
Evening
Evening
Day
Green
Evening
Evening
Day
Night
Jesse
Day
Day
Day
Night
Katie
Day
Day
Evening
Day
Lloyd
Day
Day
Night
Evening
Mable
Night
Day
Day
Evening
Nevin
Evening
Day
Day
Evening
Day
Paula
Night
Evening
Evening
Day
Rostering
Vehicle routing

Try MiniZinc

Try one of the examples, or write your own model.

Why choose MiniZinc?

  • High-level language

    Model constraint satisfaction and optimisation problems using readable, intuitive logical constructs, with full type safety.

  • Solver independent

    Run the same model using a variety of different solver technologies, without being locked into a particular solver.

  • Pre-defined constraints

    MiniZinc features a large library of pre-defined constraints, making modelling complex relationships simple.

  • Fully featured development environment

    Use the MiniZinc IDE to write and run models, visualise search and solutions, profile performance and more.

  • In-depth learning materials

    MiniZinc has comprehensive documentation, including the tutorial, several courses, the user manual, and library documentation.

  • Integrate MiniZinc into your project

    MiniZinc can be embedded into Python and JavaScript programs, and can even be used entirely from within the browser.

Latest Release

MiniZinc 2.9.0

Released 11 February 2025

  • Add support for elseif in if then elseif endif expressions without an else branch.
  • Make sort functions return array of enum when input is array of enum (issue 853).
  • Make the mzn_in_root_context function (which is used only internally and should not be used in user models) more flexible in where it can be called.
  • Update packaged version of the HiGHS solver to version 1.8.1.
  • Update Gurobi interface to be compatible with Gurobi 12.0.0.
  • Address compiler warnings concerning unsafe signed/unsigned comparisons and implicit casts between different integer types.
  • BREAKING: The usage of --compile (or -c) flag now requires the user to explicitly specify the solver for which the MiniZinc instance is being compiled, using --solver. To select the default solver (and keep the previous behaviour) you can use --solver default.
  • Add the --fzn-format flag to influence whether the generated FlatZinc from --compile or --fzn is given in the traditional FlatZinc format or the new JSON-based format. (issue 868)
  • Comments regarding the compilation invocation are now included in user-facing FlatZinc (.fzn) files, created by the --compile or --fzn flags.
  • Add par version of the among function.
  • Add support for arrays containing arrays (which only support access using par indices).
  • Add diversity.mzn library to be used with the diverse solutions toolchain included in MiniZinc Python.
  • Ensure the MiniZinc directory is added to the DLL search path when running child processes on Windows (issue 206).
  • Add par implementations for the arg_val and arg_val_weak functions.
  • Add support for calling enum constructors without arguments to return the set of all constructed values.
  • Deprecate and emit warning for implicit coercion of enums to integers. The enum2int function should be used to perform the coercion where required.

See the full changelog.

Get your MiniZinc stickers, mugs, t-shirts etc. (sold at cost price)!