1 / 45

Constraint Programming: An Introduction

Constraint Programming: An Introduction. Ho Chi Minh City. Adapted by Cristian OLIVA from Peter Stuckey (1998). Definitions. A constraint C is of the form. where m 0 y c 1 ,c 2 ,…,c m are primitives constraints. There are two distinct constraints : TRUE and FALSE.

villalpando
Download Presentation

Constraint Programming: An Introduction

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Constraint Programming: An Introduction Ho Chi Minh City Adapted by Cristian OLIVA from Peter Stuckey (1998)

  2. Definitions • A constraintC is of the form where m0 y c1,c2,…,cm are primitives constraints. There are two distinct constraints : TRUE and FALSE The empty conjunction of constraints is written as true. The conjunction of two constraints C1 and C2 is written

  3. Definitions Given a domain D and a constraint C, we can determine values of variables for which the constraint holds. X=Y+Z EXAMPLE 1. The assignment : Holds the constraint and for that the constraint is TRUE. The assignment : Doesn’t hold the constraint and then the constraint is FALSE.

  4. Definitions • A set of pairs  for a set V of variables is an asignment of values from the domaine D to variables in V. Let be V={x1,x2,…,xn} and V'V, then (V') is : where

  5. Definitions • (V') is an instantiation of the variables in V'. • An instantiation (V'), where V'V, is a partial solution if it satisfy all primitive constraints that contain the variables of V'. • An instantiation (V) is a solution if it satisfy the constraint C with domain D.

  6. Definitions • A constraint C is satisfiable if it has at least one solution. Otherwise, it is unsatisfiable. • Two constraints C1 and C2 are equivalent if they have the same set of solutions.

  7. Definitions • The function primitivas takes a constraint. and returns the set of primitive constraints {c1,c2,…,cm}

  8. Definitions • Given a constraint C and given a domain D, • Satisfaction : Does the constraint have a solution? • Solution : Give me a solution to the constraint if one exists. Constraint solver is an algorithm that determine the satisfaction of a constraint. However, these algorithms find solutions too.

  9. Domains • In general, constraints in Constraint programming mainly operate on domains which are either discrete or continuous. The most known are : • Linear arithmetics constraints • Booleans constraints • Sequence constraints • Blocks world constraints • Finite constraints domains • Others…

  10. Finite Constraint Domains • Constraint Satisfaction Problems (CSP). • A CSP consist in : • A set of variables V={x1,x2,…,xn} • For each variable xi there is a finite set of possible values D(xi) (domain) • A set of constraints C that restrict possible values that a variable can take. • A solution to the CSP is an instantiation (V) that satisfy C.

  11. Constraint Satisfaction Problem • ¿How to model an optimisation problem by using CSP ? It can be express as a sequence of CSP. For instance, we can create a variable that represents the objective value. We can add the following constraint: Objective_function<objective_current_value

  12. Different kinds of constraint satisfaction techniques • Some of the constraint satisfaction techniques are: • Chronological backtracking: Exponential time complexity. Complete solver. • Polynomial time complexity. Incomplete Solver. Local consistency • Node consistency • Arc Consistency • Hyper-arc Consistency • Bounds consistency

  13. Local Consistency Notion • The arity of a primitive constraint is the number of variables it involves. • The arity of a CSP is equal to the arity of the • highest arity constraint.

  14. Local Consistency Notion • An instantiation (V') , where V'V, is consistentif and only if(V') is a partial solution of CSP. • A solution to the CSP is a consistent instantiation (V).

  15. Node and Arc consistency • Basic Idea: Find a CSP equivalent to the original one with smaller domains. • Key: examine 1 prim. constraint c, one at a time. • Consistency-Node: (vars(c)={x}) remove the values of the domain of x that no satisfy c • Consistency-Arc: (vars(c)={x,y}) remove the values of D(x) for which there is not a value in D(y) that satisfy c and vice-versa.

  16. Node consistent • A primitive constraint c es node consistent with domain D if |vars(c)| 1 or • if vars(c) = {x} then for each d in D(x) dx is a solution of c. • A CSP is node consistent if each primitive constraint is node consistent with D.

  17. Node-consistent Example 1: This CSP is node-consistent? NO!!!

  18. Achieving Node Consistency • Node_consistent(c,d) • For each prim. Constraint c in C • D := node_consistent_primitive(c, D) • ReturnD • Node_consistent_primitive(c, D) • If|vars(c)| =1then • Let {x} = vars(c) • ReturnD 18

  19. Arc Consistency • A primitive constraint c is arc consistent with domain D if |vars{c}| ≠2 or • Vars(c) = {x,y} and for each d in d(x) there exists e in d(y) such that and similarly for y • A CSP is arc consistent if each prim. Constraint in it is arc consistent

  20. Arc-Consistency Example 2: This CSP is arc-consistent? NO!!!

  21. Achieving Arc Consistency • Arc_consistent(c,d) • Repeat • W := d • For each prim. Constraint c in C • D := arc_consistent_primitive(c,d) • UntilW = D • ReturnD

  22. Achieving Arc Consistency • Arc_consistent_primitive(c, D) • If|vars(c)| = 2then • ReturnD • Removes values which are not arc consistent with c

  23. Using node and arc consistency. • We can build constraint solvers using the consistency methods • Two important kinds of domain • False domain: some variable has empty domain • Valuation domain: each variable has a singleton domain

  24. Node and Arc Cons. Solver • Arc_solve(C,D) • D := node_consistent(C,D) • D := arc_consistent(C,D) • ifD is a false domain • returnfalse • ifD is a valuation domain • returnsatisfiable(C,D) • returnunknown

  25. Example : Graph colouring D B A F C E G

  26. A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Node consistent

  27. A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Arc consistent

  28. A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Arc-consistent

  29. A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Arc-consistent Reponse: Unknown

  30. Backtracking Constraint Solver • We can combine consistency with the backtracking solver. • Apply node and arc consistency before starting the backtracking solver and after each variable is given a value.

  31. A B C D E F G Backtracking Constraint Solver Colouring graph: with constraints Backtracking Choice a variable whose domain has a cardinality >1, G Add constraint G=red Apply consistency Reponse: satisfiable (TRUE)

  32. Hyper-arc consistency • What happens when we have primitive constraints that contains more than two variables? • hyper-arc consistency: extending the arc consistency to a arbitrary number of variables. • Unfortunately determine the hyper-arc consistency is NP-hard. • What is the solution?

  33. Hyper-arc consistency • A primitive constraint c is hyper-arc consistent with domain D if for each variable x in c and domain assignment tD(X), there is an assignment t1,…,tkto the remaining variables in c such that tj D(Xj) for 1j k and ((t1,X1),…(tk,Xk)) is a solution of c. • A CSP is hyper-arc consistent if each primitive constraint ci is hyper-arc consistent.

  34. Bounds Consistency • arithmetic CSP: constraints are integer • range: [l..u] represents the set of integers {l, l+1, ..., u} • idea use real number consistency and only examine the endpoints (upper and lower bounds) of the domain of each variable • Define min(D,x) as minimum element in domain of x, similarly for max(D,x)

  35. Bounds consistency • A prim. constraint c is bounds consistent with domain D if for each var x in vars(c) • exist real numbers d1, ..., dk for remaining vars x1, ..., xk such that : is a solution of c • And similarly for • An arithmetic CSP is bounds consistent if all its primitive constraints are.

  36. Examples What domain is bounds consistent? Compare with the hyper-arc consistent domain

  37. Achieving Bounds Consistency • Given a current domain D we wish to modify the endpoints of domains so the result is bounds consistent • propagation rules do this

  38. Achieving Bounds Consistency Consider the primitive constraint X = Y + Z which is equivalent to the three forms Reasoning about minimum and maximum values: : Propagation rules for the constraint X = Y + Z

  39. Propagation rules for X=Y+Z Bounds_consistency(D) Return D

  40. Propagation rules for Disequations give weak propagation rules, only when one side takes a fixed value that equals the minimum or maximum of the other is there propagation.

  41. Alldifferent • alldifferent({V1,...,Vn}) holds when each variable V1,..,Vn takes a different value • alldifferent({X, Y, Z}) is equivalent to • Arc consistent with domain • BUT there is no solution! specialized consistency for alldifferent can find it

  42. Other Complex Constraints • schedule n tasks with start times Si and durations Di needing resources Ri where L resources are available at each moment • array access if I = i, then X = Vi and if X ≠ Vi then I ≠ i

  43. Optimization for CSP • Because domains are finite can use a solver to build a straightforward optimizer • retry_int_opt(C, D, f, best) • D2 := int_solv(C,D) • ifD2 is a false domain then returnbest • let sol be the solution corresponding to D2 • returnretry_int_opt(C /\ f < sol(f), D, f, sol)

  44. Optimization Backtracking • Since the solver may use backtrack search anyway combine it with the optimization • At each step in backtracking search, if best is the best solution so far add the constraint f < best(f)

  45. Branch and Bound Opt. • The previous methods,unlike simplex don't use the objective function to direct search • branch and bound optimization for (C,f) • use simplex to find a real optimal, • if solution is integer stop • otherwise choose a var x with non-integer opt value d and examine the problems • use the current best solution to constrain prob.

More Related