More often than not, project and machine scheduling problems are addressed either by generic mathematical programming techniques (like MILP) or by problem-specific exact or heuristic approaches. MILP formulations are commonly used to describe the problem in mathematical terms and to provide optimal solutions or bounds to small problem instances. As they usually do not scale well, one usually resorts to using heuristics for handling large and complex industrial problems.
Though constraint programming (CP) techniques represent the state of the art in several classical project and machine scheduling benchmarks and have been used for almost 30 years for solving industrial problems, they are still seldom considered as an alternative approach in the scheduling community. A possible reason is that, for years, in the absence of efficient and robust automatic search algorithms, CP techniques have been difficult to use for non-CP experts.
We will explain why we think this time is over and illustrate our arguments with CP Optimizer, a generic system, largely based on CP, for modeling and solving real-world scheduling problems.
CP Optimizer extends linear programming with an algebraic language using simple mathematical concepts (such as intervals, sequences and functions) to capture the temporal dimension of scheduling problems in a combinatorial optimization framework. CP Optimizer implements a model-and-run paradigm that vastly reduces the burden on the user to understand CP or scheduling algorithms: modeling is by far the most important. The automatic search combines a wide variety of techniques from Artificial Intelligence (constraint programming, temporal reasoning, learning etc.) and Operations Research (mathematical programming, graph algorithms, local search, etc.) in an exact algorithm that provides good performance out of the box and which is continuously improving.