+ All Categories
Home > Documents > 1 Constraint Programming: An Introduction Adapted by Cristian OLIVA from Peter Stuckey (1998) Ho Chi...

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

Date post: 25-Dec-2015
Category:
Upload: darren-carr
View: 213 times
Download: 0 times
Share this document with a friend
Popular Tags:
45
1 Constraint Programming: An Introduction Adapted by Cristian OLI from Peter Stuckey (199 Ho Chi Minh City
Transcript

1

Constraint Programming: An

Introduction

Adapted by Cristian OLIVAfrom Peter Stuckey (1998)

Ho Chi Minh City

2

Definitions A constraint C is of the form

1 2 mc c c

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

1 2C C

3

DefinitionsGiven a domain D and a constraint C, we can determine valuesof variables for which the constraint holds.

EXAMPLE 1. X=Y+Z

The assignment : 10, 7, 3X Y Z

Holds the constraint and for that the constraint is TRUE.

The assignment : 10, 4, 5X Y Z 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 :

1 1( ') {( , ), , ( , )}

p pi i i iV x t x t

where

1' { , , }

pi iV x x

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 1X Y 1 7Y X

7

Definitions The function primitivas takes a constraint.

1 2 mc c c and returns the set of primitive constraints {c1,c2,…,cm}

1 1( ... ) { ,..., }m mprimitivas c c c c

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 algorithmsfind 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

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

12

13

Local Consistency Notion The arity of a primitive constraint is

the number of variables it involves.

:c X Y

•The arity of a CSP is equal to the arity of the highest arity constraint.

1X X Y

14

Local Consistency Notion An instantiation (V') , where V'V, is

consistent if 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?X Y Y Z Z

D X D Y D Z

2

1 2 3 4( ) ( ) ( ) { , , , }

X Y Y Z Z

D X D Y D Z

2

1 2 3 4 1 2( ) ( ) { , , , }, ( ) { , }

NO!!!

18

Achieving Node Consistency

18

Node_consistentNode_consistent(c,d) For each prim. Constraint c in C

D := node_consistent_primitivenode_consistent_primitive(c, D)

Return D Node_consistent_primitiveNode_consistent_primitive(c, D)

If |vars(c)| =1 thenLet {x} = vars(c)

Return D

D x d D x x d c( ): { ( )|{ } } is a solution of

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

{ , }x d y e c is a solution of

20

Arc-Consistency

Example 2: This CSP is arc-consistent?

X Y Y Z Z

D X D Y D Z

2

1 2 3 4 1 2( ) ( ) { , , , }, ( ) { , }

NO!!!

21

Achieving Arc Consistency

Arc_consistentArc_consistent(c,d) Repeat

W := dFor each prim. Constraint c in C

D := arc_consistent_primitivearc_consistent_primitive(c,d) Until W = D Return D

22

Achieving Arc Consistency

Arc_consistent_primitiveArc_consistent_primitive(c, D) If |vars(c)| = 2 then

Return D Removes values which are not arc

consistent with c

D x d D x e D y

x d y e c

( ): { ( )| ( ),

{ , } }

exists

is a soln of

D y e D y d D x

x d y e c

( ): { ( )| ( ),

{ , } }

exists

is a soln of

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_consistentnode_consistent(C,D) D := arc_consistentarc_consistent(C,D) if D is a false domain

return false if D is a valuation domain

return satisfiable(C,D) return unknown

25

Example : Graph colouring

A

B

C

D

E

F

G

26

Node and Arc Solver Example

Colouring graph: with constraints

FEEDFC

ECDCDB

CBCABA

A B C D E F G

Node consistent

yellowBredA

27

A B C D E F G

Arc consistent

Node and Arc Solver Example

Colouring graph: with constraints

yellowBredA

FEEDFC

ECDCDB

CBCABA

A B C D E F G

Arc-consistent

Node and Arc Solver Example

Colouring graph: with constraints

yellowBredA

FEEDFC

ECDCDB

CBCABA

A B C D E F G

Arc-consistent

Reponse:

Unknown

Node and Arc Solver Example

Colouring graph: with constraints

yellowBredA

FEEDFC

ECDCDB

CBCABA

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

Choice a variable whose domain has a cardinality >1, G

Add constraint G=red Apply consistency

Reponse: satisfiable (TRUE)

Backtracking Constraint Solver

Colouring graph: with constraints

yellowBredA

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 tD(X), there is an assignment t1,…,tk to 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.

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.

1 1{ min ( ), , }D k kx x x d x d

{ max ( )}Dx x

36

Examples

X Y Z

D X D Y D Z

3 5

2 7 0 2 1 2( ) [ .. ], ( ) [ .. ], ( ) [ .. ]

What domain is bounds consistent?

Compare with the hyper-arc consistent domainD X D Y D Z( ) { , , }, ( ) { , , }, ( ) { , } 3 5 6 0 1 2 0 1

5 3Z X Y

5 2 7 3 0

10 7

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 ConsistencyConsider the primitive constraint X = Y + Z which is equivalent to the three forms

X Y Z Y X Z Z X Y

Reasoning about minimum and maximum values: :

Propagation rules for the constraint X = Y + Z

min ( ) min ( )D DX Y Z max ( ) max ( )D DX Y Z

min ( ) max ( )D DY X Z max ( ) min ( )D DY X Z

min ( ) max ( )D DZ X Y max ( ) min ( )D DZ X Y

39

Propagation rules for X=Y+Z

Bounds_consistency(D)

min : max{min ( ),min ( ) min ( )}D D DX X Y Z

max : min{max ( ),max ( ) max ( )}D D DX X Y Z

min max( ) : { ( ) | }x XD X d D X X d X

min : max{min ( ),min ( ) max ( )}D D DY Y X Z

max : min{max ( ),max ( ) min ( )}D D DY Y X Z

min max( ) : { ( ) | }y YD Y d D Y Y d Y

min : max{min ( ),min ( ) max ( )}D D DZ Z X Y

max : min{max ( ),max ( ) min ( )}D D DZ Z X Y min max( ) : { ( ) | }z ZD Z d D Z Z d Z

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.

Y Z

D Y D Z

D Y D Z

D Y D Z D Y D Z

( ) [ .. ], ( ) [ .. ]

( ) [ .. ], ( ) [ .. ]

( ) [ .. ], ( ) [ .. ] ( ) [ .. ], ( ) [ .. ]

2 4 2 3

2 4 3 3

2 4 2 2 3 4 2 2

no propagation

no propagation

prop

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

X Y X Z Y Z

D X D Y D Z( ) { , }, ( ) { , }, ( ) { , } 1 2 1 2 1 2

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

cumulative S S D D R R Ln n n([ , , ],[ , , ],[ , , ], )1 1 1

element I V V Xn( ,[ , , ], )1

43

Optimization for CSP

Because domains are finite can use a solver to build a straightforward optimizer

retry_int_optretry_int_opt(C, D, f, best) D2 := int_solvint_solv(C,D) if D2 is a false domain then return best let sol be the solution corresponding to D2 return retry_int_optretry_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. ( , ) ( , )C x d f C x d f


Recommended