Closed
Description
This issue is to track support for a limited subset of constraint programming in MOI. At present, we don't envisage MOI having the same scope as MiniZinc, but we want users to be able to write down common constraint programs and solve them using a specialized constraint programming solver, or a MIP solver via bridges.
Background
- Improve support for constraint programming JuMP.jl#2227
- https://github.com/JuliaConstraints/ConstraintProgrammingExtensions.jl
MathOptInterface
Add new sets to MOI. Definitions taken from: https://www.minizinc.org/doc-2.5.5/en/lib-globals.html
-
all_different
: Add support for Constraint Programming #1825
-
nvalue
Add CountDistinct set #1826
-
among
Add CountBelongs set #1827
-
at_least
Add CountAtLeast set #1828
-
count_gt
Add CountGreaterThan set #1829
-
bin_packing
Add constraint programming sets #1837
-
path
Add constraint programming sets #1837
-
cumulative
Add constraint programming sets #1837
-
table
Add constraint programming sets #1837
-
circuit
Add constraint programming sets #1837
MOI.Bridges
- Add bridges from new sets to MILP reformulations as appropriate
- AllDifferent [Bridges] add AllDifferentToCountDistinctBridge #1923
- BinPacking [Bridges] update BinPackingToMILPBridge to final_touch #1925
- Circuit [Bridges] add CircuitToMILPBridge #1929
- CountAtLeast [Bridges] add CountAtLeastToCountBelongsBridge #1920
- CountBelongs [Bridges] add CountBelongsToMILPBridge #1919
- CountDistinct [Bridges] add final_touch #1901
- CountGreaterThan [Bridges] add CountGreaterThanToMILPBridge #1927
-
CumulativeAgreed with Bill to not include -
PathAgreed with Bill to not include - Table
MOI.FileFormats
-
Add FlatZinc writer. Initial work here: https://github.com/JuliaConstraints/ConstraintProgrammingExtensions.jl/tree/master/src/FlatZinc - Add MiniZinc writer https://github.com/jump-dev/MiniZinc.jl
- Add new sets to MathOptFormat [FileFormats.MOF] update to [email protected] #1954
MOI.Test
- Add new tests for constraint solvers
Solvers
Update solvers to new sets in MOI