Tech Report CS-00-07
OPL++: A Modeling Layer for Constraint Programming Libraries
Laurent Michel and Pascal Van Hentenryck
Mathematical modeling and constraint programming languages have orthogonal strengths in stating combinatorial optimization problems. Modeling languages typically feature high-level set and algebraic notations, while constraint programming languages provide a rich constraint language and the ability to specify search procedures. This paper shows that many of the functionalities typically found in modeling languages can be integrated elegantly in constraint programming libraries without defining a specific language or preprocessor. In particular, it presents the design of OPL++, a C++ modeling layer for constraint programming that combines the salient features of both approaches. Of particular interest is the one-to-one correspondance between high-level models and OPL++ statements and the negligible overhead induced by the extensions.