My Choco3 page
Choco (right now a beta version) is a constraint programming system in Java. Here are some info and code for Choco version 3: "Choco3 is not the continuation of Choco2, but a completly rewritten version and there is no backward compatibility."
Relevant Web pages for Choco3:
My Choco3 models
Below are some of my models for Choco version 3, beta (not compatible with Choco version 2). Explanations, references - and inspirations - are stated in each specific file. Please note that some of these models might contains experimental constructs (and since Choco3 right now is a beta version, certain constructs may change over time).
- AllDifferentExcept0.java: Decomposition of global constraint
alldifferent_except_0
.
- AllInterval.java: All interval problem
- AppointmentScheduling.java: Appointment scheduling
- APuzzle.java: The "8809=6..." puzzle (See "God plays dice": A puzzle)
- ArchFriends.java: Arch friends puzzle (Dell Logic Puzzles)
- ARoundOfGolf.java: A round of golf puzzle (Dell Logic Puzzles)
- Assignment.java: Assignment problem (from Winston "Operations Research")
- BalesOfHay.java: Bales of Hay (a weighing problem)
- BrokenWeights.java: Broken weights (a weighing problem)
- BusSchedule.java: Bus scheduling problem (from Taha "Introduction to Operations Research")
- CalculsDEnfer.java: Calculs d'enfer problem (from NCL manual)
- Circuit.java: Decompositions of global constraints
circuit
and circuit_path
(the latter also extracts the path from the circuit)
- Coins3.java: Coins problem (minimize the number of coins to be able to change all 1..99)
- CoinsGrid.java: Coins grid problem from Tony Hürlimann: "A coin puzzle - SVOR-contest 2007".
- CombinatorialAuction2.java: Combinatorial auction
- Contiguity.java: Decomposition of global constraint
contiguity
(using regular
)
- CostasArray.java: Costas array
- CoveringOpl.java: Set Covering problem (from OPL)
- Crew.java: Crew scheduling problem (from Gecode)
- CrossWord.java: Cross word (simple CLP example).
- DeBruijn.java: de Bruijn sequences, both "normal" and "arbitrary".
Usage: java DeBruijn base n (m)
where base
is the base to work with, n
is the "bit length" and m
the optional length of the sequence (default length is base^n).
- Diet.java: Simple diet problem.
- DiscreteTomography.java: Discrete tomography
- DivisibleBy9Through1.java: Divisible by 9 through 1 (alphametic problem). Note: It works for N <= 8.
- DriveYaNuts.java: Drive Ya Nuts puzzle (rotating "nuts")
- Dudeney.java: Dudeney numbers
- EinavPuzzle.java: Einav puzzle (Solving A programming puzzle from Einav.)
- FillAPix.java: Fill-a-Pix puzzle
- FiveFloors.java: Five floors problem (from Radul and Sussman: "The Art of Propagator")
- FurnitureMoving.java: Simple task optimization using cumulative.
- FurnitureMoving2.java: Simple task optimization using cumulative. A little more general model
- Futoshiki.java: Futoshiki grid puzzle
- Grid17x17.java: 17x17 grid problem (experimental)
- JustForgotten.java: Just forgotten puzzle (Enigma puzzle #1517)
- Kakuro.java: Kakuro grid puzzle
- KenKen2.java: KenKen grid puzzle
- KillerSudoku.java: Killer Sudoku grid puzzle
- LabeledDice.java: Labeled dice problem
- Lanford.java: Langford's number problem
- LeastDiff2.java: Least diff problem, an alphametic puzzle, minimize the difference ABCDE-FGHIJ where A..J is integers 0..9 (all different)
- Lectures.java: Lecture scheduling (from Biggs "Discrete Mathematics")
- MagicHexagon.java: Magic hexagon problem (CSPLib #23)
- MagicSequence.java: Magic sequence problem (CSPLib #19)
- MagicSquare.java: Magic square problem
- MagicSquareAndCards.java: Magic squares and cards (Martin Gardner)
- Map.java: Simple map coloring problem
- Map2.java: Simple map coloring problem, a more general approach
- Marathon2.java: Marathon logic puzzle (example from Xpress system)
- MineSweeper.java: Minesweeper problem.
Problem files for the Minesweeper program.
Usage: java Minesweeper problem file
- MoneyChange.java: How many ways are there to make a change for a dollar? (simple model just using
scalar
constraint)
- MrSmith.java: Smith family problem, logical puzzle (IF Prolog example)
- NontransitiveDice.java: Nontransitive dice
- Olympic.java: Olympic logic puzzle (Prolog benchmark)
- OrganizeDay.java: Organizing a day, simple scheduling problem
- PartitionIntoSubsetsOfEqualValues.java: Partition into subsets of equal values
- PartitionIntoSubsetsOfEqualValues2.java: Partition into subsets of equal values (randomizing the problem)
- PerfectSquareSequence.java: Perfect square sequence
- PhotoProblem.java: Photo problem (from Mozart/Oz)
- PickingTeams.java: Picking teams where the objective is to minimize the difference of total strength of each team.
- PlaceNumberPuzzle.java: Place number puzzle
- PMedian.java: P-median problem (OPL)
- PostOfficeProblem.java: Post office problem (Winston "Operations Research")
- QuasigroupCompletion.java: Quasigroup completion problem.
Problem files:
- Queen.java: N-queens problem
- SafeCracking.java: Safe cracking problem (from Oz primer)
- SchedulingSpeakers.java: Scheduling speakers (from Rina Dechter "Constraint Processing")
- SecretSanta.java: Secret Santa problem
- SecretSanta2.java: Secret Santa problem II (optimizing "Santa distance")
- SendMoreMoney.java: SEND+MORE=MONEY (alphametic problem)
- SendMoreMoneyAnyBase.java: SEND+MORE=MONEY in any base (alphametic problem)
- SendMostMoney.java: SEND+MOST=MONEY: maximize MONEY and show all
solutions with the optimal value of MONEY
- Seseman.java: Seseman convent problem, a simple recreational mathematics puzzle.
- SetCovering.java: Set covering problem (from Wayne Winston "Operations Research")
- SetCovering2.java: Set covering problem (from Taha "Operations Research")
- SetCovering3.java: Set covering problem (from Katta G. Murty)
- SetCovering4.java: Set covering problem (Lundgren, Roennqvist, Vaebrand: "Optimimeringlaera" [Swedish book, translated: "Optimization theory" (or Operations research)])
- SetCoveringDeployment.java: Set covering deployment problem
- SichermanDice.java: Sicherman Dice
- SkiAssignment.java: Ski assignment problem
- Strimko2.java: Strimko grid puzzle
- SubsetSum.java: Subset sum problem (Katta G. Murty)
- Sudoku.java: Sudoku
- SurvoPuzzle.java: Survo puzzle.
Problem files:
- ToNum.java: Channeling between an array of digits and a number (for a base)
- TrafficLights.java: Traffic lights problem (CSPLib #16)
- Xkcd.java: Xkcd "knapsack" problem
- YoungTableuax.java: Young tableaux and partitions
- Zebra.java: Zebra problem
Also see My Constraint Programming Blog
* Common constraint programming problems
* My MiniZinc page
* My Zinc page
* My JaCoP page
* My Choco2 page
* My JaCoP/Scala page
* My Gecode/R page
* My Comet page
* My Gecode page
* My Gecode/R page
* My ECLiPSe page
* My Tailor/Essence' page
* My SICStus Prolog page
* My Google or-tools page
* My OscaR page
* My JSR-331 page
* My Numberjack page
* My AIMMS+CP page
* My B-Prolog page
* My Picat page
* My z3/python page
* My SWI-Prolog page
Back to my homepage
Created by Hakan Kjellerstrand hakank@gmail.com