ConstraintProgrammingExtensions.jl - Archive ouverte HAL Access content directly
Conference Papers Year :


Thibaut Cuvelier


Constraint programming is a modelling paradigm that has proved to be extremely useful in many real world scenarios, like computing optimum schedules or vehicle routings. It is often viewed as either a complementary or a competing technology to mathematical programming, trading modelling ease with computational efficiency. Both approaches have seen many developments in terms of modelling language and solvers alike, including in Julia. Even though several constraint-programming solvers are available (or entirely written) in Julia, JuMP and MathOptInterface (its solver abstraction layer) do not give access to them in the same, unified way as mathematical programming, though the latest versions of JuMP have been designed to provide great flexibility. ConstraintProgrammingExtensions is currently a one-man project bringing constraint programming to JuMP. Its main part is a large series of sets that aim at providing a common interface for constraint programming solvers. It also consists of a series of bridges that define relationships between those sets (including between high-level constraints such as knapsacks and mathematical-programming formulations) and of a FlatZinc reader-writer to import and export models in that common format, already supported by tens of solvers. As a side effect, ConstraintProgrammingExtensions is also becoming a way to ease modelling for mathematical programming, as high-level constraints can be used with traditional mathematical-programming solvers. This presentation details the current state of ConstraintProgrammingExtensions, some of its design decisions, and future developments when JuMP and MathOptInterface do not provide sufficient versatility: for instance, several constraint-programming solvers allow graphs as first-class decision variables; also, constraint programming is not restricted by the linearity or the convexity of mathematical expressions, unlike many mathematical-programming solvers.
juliacon.pdf (495.94 Ko) Télécharger le fichier

Dates and versions

hal-03306211 , version 1 (29-07-2021)




  • HAL Id : hal-03306211 , version 1


Thibaut Cuvelier. ConstraintProgrammingExtensions.jl: An MOI/JuMP extension for constraint programming. JuliaCon 2021 (with JuMP-dev), JuliaCon 2021 Organizing Committee, Jul 2021, Online, United States. ⟨hal-03306211⟩
32 View
113 Download


Gmail Facebook Twitter LinkedIn More