7766.mp4
7766.mp3
Constraint Programming with JuMP
Full Text
Share
Benoit Legat is from the Catholic University of Louvain, Belgium. This tutorial provides a comprehensive guide to solving constraint programming problems using JuMP, a domain-specific modeling language for mathematical optimization in Julia. JuMP supports a wide range of solvers including SAT, CP (both Constraint Programming and Conic Programming), and Mixed-Integer Linear Programming (MILP) solvers, all accessible through a unified interface. One of JuMP's key features is its powerful constraint reformulation mechanism, which allows users and solvers to define new constraint types and reformulations or to disable existing ones. JuMP's automatic reformulation process involves solving a shortest path problem within a hypergraph that represents all possible constraint types and their reformulations. This innovative approach enables users to effectively explore and experiment with different reformulations, ensuring the appropriate model is communicated to the solver. JuMP also implements an interface with MiniZinc which allows it to use any solver that MiniZinc supports. We also show how to use callbacks with MILP solvers, an essential feature to combine the generic heuristic of the solver with the user problem-specific knowledge. During the tutorial, we go through several examples to illustrate each aspect of the talk