Constraint Programming (CP)

Constraint Programming (CP) is a more recent systematic method (compared to Linear Programming). Here the term programming refers to the method's roots in the field of programming languages. Constraint programming is a recent entry in the field of programming languages and aims to reduce the gap between high-level description of an optimization problem and the computer algorithm implemented to solve it. Constraint programming works by performing a tree search and enumerating all possible solutions. For each constraint that is propagated the domain of possible variables is reduced by eliminating infeasible assignments, leaving a smaller search space. The efficiency of the search depends on a number of things. How constraints are modelled is very important, as they will determine how much the domains of variables get reduced, and how quickly. In addition, adding redundant constraints can drastically reduce the search space. The efficiency of the search will also depend on the order in which variables are labelled and constraints propagated, as that will also have an effect on how quickly the search space is reduced. How tree searching is performed and how backtracking is implemented is also quite important in this respect. Introducing additional techniques, such as local search, is another way of improving the tree search.

An example of an early constraint programming language is CLP(R).  Early constraint programming languages such as this included constraint systems based on linear programming, consistency techniques, interval reasoning and Boolean unification. Early programming components were based on the computational model of Prolog, but recent constraint languages include many new algorithms specifically designed for certain applications, for example job scheduling problems. In recent years constraints have been embedded within other programming languages such as C++. A good example of this is the ILOG Solver. CP is very efficient for solving highly constrained combinatorial optimization problems, where propagation of constraints will eliminate a large portion of the search space. However, in loosely constrained problems, where there is still a large number of feasible solutions to consider, use of CP becomes impractical as it is still performing close to a complete search of an NP-hard problem.

[ PREVIOUS PAGE ] [ NEXT PAGE ]