Why constraint programming? Constraint programming is a native satisfiability technology that takes its roots in computer science—logic programming, graph theory, and the artificial intelligence efforts of the 1980s. Recent progress in the development of tunable and robust black-box search for constraint programming engines have turned this technology into a powerful and easy-to-use optimization technology. Constraint programming has proven very efficient for solving scheduling problems. Getting Started with Scheduling in ILOG OPL Development Studio is an introductory tutorial on the use of constraint programming-based scheduling in OPL. The “Language Reference Manual” provides more information. Constraint programming is also an efficient approach to solving and optimizing problems that are too irregular for mathematical optimization. This includes time tabling problems, sequencing problems, and allocation or rostering problems. The reasons for these irregularities that make the problem difficult to solve for mathematical optimization can be: Constraints that are nonlinear in nature A non convex solution space that contains many locally optimal solutions Multiple disjunctions, which result in poor information returned by a linear relaxation of the problem Read Constraint programming versus mathematical programming for a detailed comparison. Differences with mathematical programming In contrast with math programming, constraint programming requires: Explicit modeling for max, min, abs More memory usage per decision variable ...