IBM ILOG Solver User's Manual > The Basics > Constraint Programming with IBM ILOG Solver > Solve > Constraint propagation during search

Solver performs constraint propagation during search. This constraint propagation differs from the initial constraint propagation. The initial constraint propagation removes all values from domains that will not take part in any solution. Constraint propagation during search removes all values from the current domains that violate the constraints. You can think of constraint propagation during search in the following way. In order to "try" a value for a variable, Solver creates "test" or current domains. When constraint propagation removes values from domains during search, values are only removed from these "test" domains.

Examine the search tree. The search strategy has assigned the value 10 to the variable x. You try the value y = 5. This combination of values (x = 10, y = 5) violates the constraint x + y = 17. Solver removes the value y = 5 from the current domain of y. Next, you try the value y = 6. This combination of values (x = 10, y = 6) violates the constraint x + y = 17. Solver removes the value y = 6 from the current domain of y. Next, you try the value y = 7. This combination of values (x = 10, y = 7) satisfies the constraint x + y = 17. However, it violates the constraint x - y = 5. Solver removes the value y = 7 from the current domain of y.

intro_search_prop4.gif

Figure 1.4 Search tree after constraint propagation during search