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.1 (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.1

Released 3 March 2025

  • Don't include empty stack traces in JSON stream errors or warnings (issue 880, issue 212).
  • Wait 1 second between sending SIGTERM and SIGKILL signals to solvers to allow more time for cleanup (issue 882).
  • Fix a bug where calls to enum2int weren't correctly removed in comprehensions, leading to an internal error (issue 879).
  • Fix false-positive implicit enum coercion warnings when calling card and some inequality operators.
  • Fix false-positive implicit enum coercion warnings for calls with comprehension arguments (issue 887).
  • Recursively type check type-insts of variable declarations and function items.
    • This enables enum constructors and other functions to be used on the left hand side of declarations, and allows overloading of functions with identifiers in type-insts to be correctly resolved.
  • Fix type error in flexible job shop documentation example caused by change of signature of cumulative to enum-safe version in 2.9.0.
  • Accept enum types for the two argument regular constraint to avoid false-positive warnings about implicit enum to int coercion.
  • Disallow multiple comma-separated arguments in string interpolations, which previously caused unexpected behaviour.
  • Fix incorrect output of non-improving solutions when using HiGHS.
  • Use scroll buttons when the tab bar overflows to ensure the side panels can be resized in the MiniZincIDE (issue 213).

See the full changelog.

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