Visual Solver A modeling language for constraint programming
Probably the main contribution of constraint programming is the observation that constraint-solving techniques from various areas can be embedded in programming languages to offer effective tools to tackle a variety of combinatorial search problems. The benefits come from the ease of programming which reduces development time and encourage more experimentation and tuning.
Many constraint programming languages are however “constrained” by the environment they are embedded into or by the natural desire to offer a general-purpose programming language. These host languages are appropriate for some aspects of the task at hand but they may be obstacles to a natural expression of some other components of the application. For instance, constraint logic programming is based a clean semantic framework offering nondeterminism for free but it has little support to stating constraints and heuristics at a high level. A C++ library such as Ilog Solver is an efficient and extensible tool for constraint programming offering the advantage of object orientation but search is less natural and the specificities of C++ may be an obstacle to non-computer scientists.
This state of affairs is hardly new and was experienced before the operations research community, where the use of linear (and nonlinear) programming code used to be a difficult task.-The inception of modeling languages such as GAMS and AMPL satisfied the need to abstract irrelevant details of the programming languages and tools. These languages made it possible to state linear programming problems almost as in textbooks and scientific papers.
This talk describes a similar effort for constraint programming and illustrates the approach using VISUAL SOLVER, a modeling language for constraint programming. Visual SOLVER makes it possible to state many combinatorial search problems in a form close to a mathematical description of the problem. It goes beyond traditional modeling languages both by supporting traditional constraint programming technology and by letting practitioners specify both the problem statement and the heuristics used to find solutions.