Numberjack is a modelling package written in Python for constraint programming. Python benefits from a large and active programming community, Numberjack is therefore a perfect tool to embed CP technology into larger applications. It is designed to support a number of underlying C/C++ solvers seamlessly and efficiently. There are a number of available back-ends: three mixed integer programming solvers (Gurobi, CPLEX, and SCIP), satisfiability solvers (MiniSat, Walksat, and many others), a constraint programming solver (Mistral), and a weighted constraint satisfaction solver (Toulbar2).

- Numberjack offers a high level modelling platform.
- Numberjack directly benefits from Python's features and modules.
- Numberjack uses efficient underlying C/C++ solvers.

- Tutorial

- Examples

- Download

- Helmut Simonis' presentation (video) An Introduction to Constraint Programming and Combinatorial Optimisation using Numberjack - Part 1, An Introduction to Constraint Programming and Combinatorial Optimisation using Numberjack - Part 2

- alldifferent_except_0.py: Decomposition of global constraint alldifferent except 0
- assignment.py: Assignment problem (Winston)
- bus_schedule.py: Bus scheduling problem (Taha)
- circuit.py: (Decomposition of) global constraint
`circuit`

- coins_grid.py: Coins grid problem
- combinatorial_auction.py: Combinatorial auction (from Numberjack's Tutorial)
- combinatorial_auction2.py: Combinatorial auction, generalized model
- crossword2.py: Simple crossword problem
- debruijn.py: de Bruijn sequence
- diet1.py: Simple diet problem
- discrete_tomography.py: Discrete tomography.

Data files:

- hidato.py: Hidato problem
- knapsack.py: Knapsack problem
- least_diff.py: Alphametic problem
- magic_squares_and_cards.py: Magic Squares and Cards (Martin Gardner)
- map_coloring.py: Map coloring
- minesweeper.py: Minesweeper

Data files:- Problem 0 from Gecode minesweeper.cc
- Problem 1 from Gecode minesweeper.cc
- Problem 2 from Gecode minesweeper.cc
- Problem 3 from Gecode minesweeper.cc
- Problem 4 from Gecode minesweeper.cc
- Problem 5 from Gecode minesweeper.cc
- Problem 6 from Gecode minesweeper.cc
- Problem 7 from Gecode minesweeper.cc
- Problem 8 from Gecode minesweeper.cc
- Problem 9 from Gecode minesweeper.cc
- From "Some Minesweeper Configurations",page 2
- From "Some Minesweeper Configurations",page 3
- From Richard Kaye: "How Complicated is Minesweeper?", splitter (131072 solutions)
- From Richard Kaye: "How Complicated is Minesweeper?", wire

- nontransitive_dice.py: Nontransitive dice
- place_number_puzzle.py: Place number puzzle.
- quasigroup_completion.py: Quasigroup completion problem.

Problem files:

- send_more_money_any_base.py: SEND + MORE = MONEY in any base
- send_most_money.py: SEND + MOST = MONEY, and optimize for MONEY (also: show all optimal solutions)
- seseman.py: Seseman Convent problem
- sicherman_dice.py: Sicherman dice
- subset_sum.py: Subset sum problem (Murty)
- survo_puzzle.py: Survo puzzle

Data files:

- sudoku.py: Sudoku problem
- to_num.py: Converting a number to/from an array given some base
- who_killed_agatha.py: Who killed Agatha?
- xkcd.py: Another knapsack problem, from xkcd

Also, see my other pages about constraint programming systems:

* My Constraint Programming Blog * Constraint Programming

* Common constraint programming problems

* My MiniZinc page

* My JaCoP page

* My JaCoP/Scala page

* My Choco page

* My Gecode page

* My Gecode/R page

* My Comet page

* My ECLiPSe page

* My Tailor/Essence' page

* My SICStus Prolog page

* My Google or-tools page

* My OscaR page

* My AIMMS+CP page

* My B-Prolog page

* My Choco3 page

* My Picat page

Back to my homepage

Created by Hakan Kjellerstrand hakank@gmail.com