In this chapter we will focus on the combination of evolutionary computation (EC ) techniques and constraint satisfaction problems (CSPs). Constraint programming (CP) is another approach to deal with constraint satisfaction problems. In fact, it is an important prelude to the work covered here as it advocates itself as an alternative approach to programming. The first step is to formulate a problem as a CSP such that techniques from CP, EC, combinations of the two, often referred to as hybrids, or other approaches can be deployed to solve the problem. The formulation of a problem has an impact on its complexity in terms of effort required to either find a solution or that proof no solution exists. It is, therefore, vital to spend time on getting this right.
CP defines search as iterative steps over a search tree where nodes are partial solutions to the problem where not all variables are assigned values. The search then maintains a partial solution that satisfies all variables with assigned values. Instead, in EC algorithms sample a space of candidate solutions where for each sample point variables are all assigned values. None of these candidate solutions will satisfy all constraints in the problem until a solution is found. Such algorithms are often classified as Davis–Putnam–Logemann–Loveland (DPLL ) algorithms, after the first backtracking algorithm for solving CSP.
Another major difference is that many constraint solvers from CP are sound, whereas EC solvers are not. A solver is sound if it always finds a solution if it exists. Furthermore, most constraint solvers from CP can easily be made complete, although this is often not a desired property for a constraint solver. A constraint solver is complete if it can find every solution to a problem.
This article is authored also by Synbrain data scientists and collaborators. READ THE FULL ARTICLE