480 likes | 537 Views
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.
E N D
Constraint Programming: An Introduction Ho Chi Minh City Adapted by Cristian OLIVA from Peter Stuckey (1998)
Definitions • A constraintC is of the form where m0 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
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.
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
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.
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.
Definitions • The function primitivas takes a constraint. and returns the set of primitive constraints {c1,c2,…,cm}
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.
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…
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.
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
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
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.
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).
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.
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) dx is a solution of c. • A CSP is node consistent if each primitive constraint is node consistent with D.
Node-consistent Example 1: This CSP is node-consistent? NO!!!
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
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
Arc-Consistency Example 2: This CSP is arc-consistent? NO!!!
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
Achieving Arc Consistency • Arc_consistent_primitive(c, D) • If|vars(c)| = 2then • ReturnD • Removes values which are not arc consistent with c
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
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
Example : Graph colouring D B A F C E G
A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Node consistent
A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Arc consistent
A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Arc-consistent
A B C D E F G Node and Arc Solver Example Colouring graph: with constraints Arc-consistent Reponse: Unknown
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.
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)
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?
Hyper-arc consistency • A primitive constraint c is hyper-arc consistent with domain D if for each variable x in c and domain assignment tD(X), there is an assignment t1,…,tkto the remaining variables in c such that tj D(Xj) for 1j 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.
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)
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.
Examples What domain is bounds consistent? Compare with the hyper-arc consistent domain
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
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
Propagation rules for X=Y+Z Bounds_consistency(D) Return D
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.
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
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
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)
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)
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.