non binary constraints n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Non-binary constraints PowerPoint Presentation
Download Presentation
Non-binary constraints

Loading in 2 Seconds...

play fullscreen
1 / 92

Non-binary constraints - PowerPoint PPT Presentation


  • 107 Views
  • Uploaded on

Non-binary constraints. Toby Walsh Cork Constraint Computation Center tw@4c.ucc.ie. Global constraints. Toby Walsh Cork Constraint Computation Center tw@4c.ucc.ie. Non-exhaustive catalog. Order constraints Constraints on values Partitioning constraints Timetabling constraints

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Non-binary constraints' - pepin


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
non binary constraints

Non-binary constraints

Toby Walsh

Cork Constraint Computation Center

tw@4c.ucc.ie

global constraints

Global constraints

Toby Walsh

Cork Constraint Computation Center

tw@4c.ucc.ie

non exhaustive catalog
Non-exhaustive catalog
  • Order constraints
  • Constraints on values
  • Partitioning constraints
  • Timetabling constraints
  • Graph constraints
  • Scheduling constraints
  • Bin-packing constraints
global constraints1
Global constraints
  • It isn’t just all-different!
  • Many constraints specialized to application domains
    • Scheduling
    • Packing
    • ..
order constraints
Order constraints
  • min(X,[Y1,..,Yn]) and max(X,[Y1,..Yn])

X <= minimum(Y1,..,Yn)

X >= maximum(Y1,..Yn)

n.b. min is relational not functional

order constraints1
Order constraints
  • min(X,[Y1,..,Yn]) and max(X,[Y1,..Yn])

X <= minimum(Y1,..,Yn)

X <= maximum(Y1,..Yn)

n.b. min is relational not functional

  • min_mod(X,[Y1,..,Yn],m) and max_mod(X,[Y1,..Yn],m)

X mod m <= minimum(Y1 mod m,..,Yn mod m)

X mod m <= maximum(Y1 mod m,..,Yn mod m)

order constraints2
Order constraints
  • min_n(X,n,[Y1,..Ym]) and max_n(X,n,[Y1,..,Ym)

X is nth smallest value in Y1,..Ym

X is nth largest value in Y1,..Ym

order constraints3
Order constraints
  • min_n(X,n,[Y1,..Ym]) and max_n(X,n,[Y1,..,Ym)

X is nth smallest value in Y1,..Ym

X is nth largest value in Y1,..Ym

min_n(X,1,[Y1,..,Ym]) => min(X,[Y1,..,Yn])

max_n(X,1,[Y1,..,Ym]) => max(X,[Y1,..,Ym])

n.b. min_n is functional but min is relational (any X smaller than min will do!

value constraints
Value constraints
  • among(N,[Y1,..,Yn],[val1,..,valm])

N vars in [Y1,..,Yn] take values val1,..valm

e.g. among(2,[1,2,1,3,1,5],[3,4,5])

value constraints1
Value constraints
  • among(N,[Y1,..,Yn],[val1,..,valm])

N vars in [Y1,..,Yn] take values val1,..valm

e.g. among(2,[1,2,1,3,1,5],[3,4,5])

  • count(n,[Y1,..,Ym],op,X) where op is =,<,>,=/,<= or >=

relation “Yi op X” holds n times

E.g. among(n,[Y1,..,Ym],[k]) = count(n,[Y1,..,Ym],=,k)

value constraints2
Value constraints
  • balance(N,[Y1,..,Yn])

N = occurrence of more frequent value - occurrence of least frequent value

E.g balance(2,[1,1,1,3,4,2])

value constraints3
Value constraints
  • balance(N,[Y1,..,Yn])

N = occurrence of more frequent value - occurrence of least frequent value

E.g balance(2,[1,1,1,3,4,2])

all-different([Y1,..,Yn]) => balance(0,[Y1,..,Yn])

value constraints4
Value constraints
  • min_nvalue(N,[Y1,..,Yn]) and max_nvalue(N,[Y1,..,Yn])

least (most) common value in Y1,..,Yn occurs N times

E.g. min_nvalue(2,[1,1,2,2,2,3,3,5,5])

Can replace multiple count or among constraints

value constraints5
Value constraints
  • common(X,Y,[X1,..,Xn],[Y1,..,Ym])

X vars in Xi take a value in Yi

Y vars in Yi take a value in Xi

E.g. common(3,4,[1,9,1,5],[2,1,9,9,6,9])

value constraints6
Value constraints
  • common(X,Y,[X1,..,Xn],[Y1,..,Ym])

X vars in Xi take a value in Yi

Y vars in Yi take a value in Xi

E.g. common(3,4,[1,9,1,5],[2,1,9,9,6,9])

among(X,[Y1,..,Yn],[val1,..,valm]) = common(X,Y,[X1,..,Yn],[val1,..,valm])

value constraints7
Value constraints
  • same([X1,..,Xn],[Y1,..,Yn])

Yi is a permutation of Xi

value constraints8
Value constraints
  • same([X1,..,Xn],[Y1,..,Yn])

Yi is a permutation of Xi

  • used_by([X1,..,Xn],[Y1,..,Ym])

all values in Yi are used by vars in Xi

m>=m

value constraints9
Value constraints
  • same([X1,..,Xn],[Y1,..,Yn])

Yi is a permutation of Xi

  • used_by([X1,..,Xn],[Y1,..,Ym])

all values in Yi are used by vars in Xi

m>=m

  • on n values:

alldifferent([X1,..,Xn])=same([X1,..,Xn],[1,..,n])

=used_by([X1,..,Xn],[1,..,n])

partitioning constraints
Partitioning constraints
  • all-different([X1,..,Xn])
partitioning constraints1
Partitioning constraints
  • all-different([X1,..,Xn])
  • Other flavours

all-different_except_0([X1,..,Xn])

Xi=/Xj unless Xi=Xj=0

  • 0 is often used for modelling purposes as “dummy” value
    • Don’t use this slab
    • Don’t open this bin ..
partitioning constraints2
Partitioning constraints
  • all-different([X1,..,Xn])
  • Other flavours

symmetric-all-different([X1,..,Xn])

Xi=/Xj and Xi=j iff Xj=i

  • Very common in practice
    • Team i plays j iff Team j plays i..
partitioning constraints3
Partitioning constraints
  • all-different([X1,..,Xn])
  • Other flavours

symmetric-all-different([X1,..,Xn])

Xi=/Xj and Xi=j iff Xj=i

  • Very common in practice
    • Team i plays j iff Team j plays i..
    • Regin has proposed very efficient algorithm
partitioning constraints4
Partitioning constraints
  • nvalue(N,[X1,..,Xn])

Xi takes N different values

all-different([X1,..,Xn]) = nvalue(n,[X1,..,Xn)

partitioning constraints5
Partitioning constraints
  • nvalue(N,[X1,..,Xn])

Xi takes N different values

all-different([X1,..,Xn]) = nvalue(n,[X1,..,Xn)

  • gcc([X1,..,Xn],Lo,Hi)

values in Xi occur between Lo and Hi times

all-different([X1,..,Xn])=gcc([X1,..,Xn],1,1)

timetabling constraints
Timetabling constraints
  • change(N,[X1,..,Xn]),op) where op is {=,<,>,<=,>=,/=}

“Xi op Xi+1” holds N times

E.g. change(3,[4,4,3,4,1],/=)

  • You may wish to limit the number of changes of classroom, shifts, …
timetabling constraints1
Timetabling constraints
  • longest_changes(N,[X1,..,Xn]),op) where op is {=,<,>,<=,>=,/=}

longest sequence “Xi op Xi+1” is of length N

E.g. longest_changes(2,[4,4,4,3,3,2,4,1,1,1],=)

  • You may wish to limit the length of a shift without break, …
graph constraints
Graph constraints
  • Tours in graph a often represented by the successors:
  • [X1,..,Xn] means from node i we go to node Xi
graph constraints1
Graph constraints
  • Tours in graph a often represented by the successors:
  • [X1,..,Xn] means from node i we go to node Xi
  • E.g. [2,1,5,3,4] represents the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3)

graph constraints2
Graph constraints
  • cycle(N,[X1,..,Xn])

there are N cycles in Xi

e.g. cycle(2,[2,1,5,3,4]) as we have the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3)

Useful for TSP like problems (e.g. sending engineers out to repair phones)

graph constraints3
Graph constraints
  • derangement(N,[X1,..,Xn])

there are no length 1 cycles in Xi

graph constraints4
Graph constraints
  • derangement(N,[X1,..,Xn])

there are no length 1 cycles in Xi

e.g. derangement([2,1,5,3,4]) as the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3) have length 2

and 3

graph constraints5
Graph constraints
  • derangement(N,[X1,..,Xn])

there are no length 1 cycles in Xi

e.g. derangement([2,1,5,3,4]) as the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3) have length 2

and 3

e.g. derangement([3,1,2,4]) as the 2 cycles (1)->(3)->(2)->(1) and (4)->(4) are of length 3 and 1

graph constraints6
Graph constraints
  • We may also wish to represent predecessors
    • For good labelling heuristics
    • For ease of statement of constraints
  • [X1,..,Xn] means we came to node i from node Xi
graph constraints7
Graph constraints
  • We may also wish to represent predecessors
    • For good labelling heuristics
    • For ease of statement of constraints
  • [X1,..,Xn] means we came to node i from node Xi
  • E.g. [2,1,4,5,3] now represents the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3)

graph constraints8
Graph constraints
  • We may also wish to represent predecessors
    • For good labelling heuristics
    • For ease of statement of constraints
  • [X1,..,Xn] means we came to node i from node Xi
  • E.g. [2,1,4,5,3] now represents the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3)

  • In successor notation this was [2,1,5,3,4]
graph constraints9
Graph constraints
  • We may also wish to represent predecessors
    • For good labelling heuristics
    • For ease of statement of constraints
  • [X1,..,Xn] means we came to node i from node Xi
  • E.g. [2,1,4,5,3] now represents the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3)

  • In successor notation this was [2,1,5,3,4]
    • How do we know they are the same?
graph constraints10
Graph constraints
  • We may also wish to represent predecessors
    • For good labelling heuristics
    • For ease of statement of constraints
  • [X1,..,Xn] means we came to node i from node Xi
  • E.g. [2,1,4,5,3] now represents the 2 cycles

(1)->(2)->(1) and (3)->(5)->(4)->(3)

  • In successor notation this was [2,1,5,3,4]
    • How do we know they are the same?
    • With a channelling constraint!
graph constraints11
Graph constraints
  • Inverse([X1,..,Xn],[Y1,..,Yn])

Where [X1,..,Xn] is a successor representation of a path, and [Y1,..,Yn] is a predecessor

Thus inverse([2,1,4,5,3],[2,1,5,3,4])

graph constraints12
Graph constraints
  • Inverse([X1,..,Xn],[Y1,..,Yn])

Where [X1,..,Xn] is a successor representation of a path, and [Y1,..,Yn] is a predecessor

Thus inverse([2,1,4,5,3],[2,1,5,3,4])

And inverse([2,1,5,3,4],[2,1,4,5,3])

scheduling constraints
Scheduling constraints
  • cummulative([S1,..,Sn],[D1,..,Dn],[E1,..,En],[H1,..,Hn],L)
  • schedules n (concurrent) jobs, each with a height Hi
  • ith job starts at Si, runs for Di and ends at Ei
    • Ei=Si+Di
  • at any time, accumulated height of running jobs is less than L

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

scheduling constraints1
Scheduling constraints
  • coloured_cummulative([S1,..,Sn],[D1,..,Dn],[E1,..,En],[C1,..,Cn],L)
  • schedules n (concurrent) each with a colour Ci
  • no more than L colours running at any one time

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

scheduling constraints2
Scheduling constraints
  • cycle_cummulative(m,[S1,..,Sn],[D1,..,Dn],[E1,..,En],[H1,..,Hn],L)
  • schedules n (concurrent) jobs, each with a height Hi onto a cyclic schedule of length m
scheduling constraints3
Scheduling constraints
  • cummulatives([M1,,,Mn],[S1,..,Sn],[D1,..,Dn],[E1,..,En],[H1,..,Hn],[L1,..,Lm])
  • schedules n (concurrent) jobs, each with a height Hi onto one of m machines
  • ith runs on Mi
  • accumulated height of running jobs on machine i <= Li
scheduling constraints4
Scheduling constraints
  • cummulatives([M1,..Mn],[S1,..,Sn],[D1,..,Dn],[E1,..,En],[H1,..,Hn],[L1,..,Lm])

Machine 1

Machine 2

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

scheduling constraints5
Scheduling constraints
  • coloured_cummulatives([M1,,,Mn],[S1,..,Sn],[D1,..,Dn],[E1,..,En],[C1,..,Cn],[L1,..,Lm])
  • schedules n (concurrent) jobs, each with a colour i onto one of m machines
  • ith runs on Mi
  • number of colours of running jobs on machine i <= Li
bin packing constraints
Bin-packing constraints
  • bin_packing(capacity,[B1,..,Bn],[w1,..,wn])

for each bin j, sum_Bi=j wi <= capacity

bin packing constraints1
Bin-packing constraints
  • bin_packing(capacity,[B1,..,Bn],[w1,..,wn])

for each bin j, sum_Bi=j wi <= capacity

special case of cummulative with task durations=1

bin packing constraints2
Bin-packing constraints
  • bin_packing(capacity,[B1,..,Bn],[w1,..,wn])

for each bin j, sum_Bi=j wi <= capacity

special case of cummulative with task durations=1

unlike normal bin-packing, does not minimize the number of open bins

bin packing constraints3
Bin-packing constraints
  • bin_packing(capacity,[B1,..,Bn],[w1,..,wn])

for each bin j, sum_Bi=j wi <= capacity

special case of cummulative with task durations=1!

unlike normal bin-packing, does not minimize the number of open bins

how could we do this?

bin packing constraints4
Bin-packing constraints
  • bin_packing(capacity,[B1,..,Bn],[w1,..,wn])

for each bin j, sum_Bi=j wi <= capacity

special case of cummulative with task durations=1!

unlike normal bin-packing, does not minimize the number of open bins

Bi=j implies Open_j=1

Minimize sum_j Open_j

misc constraints
Misc constraints
  • element(Index,[a1,..,an],Var)

Var=a_Index

constraint programming’s answer to arrays!

e.g. element(Item,[10,23,12,15],Cost)

gac schema
GAC-Schema
  • A generic framework for achieving AC for any kind of constraint (can be non binary).Bessiere and Regin, IJCAI’97
  • You just have to say how to compute a solution.
  • Works incrementality (notion of support).
gac schema instantiation
GAC-Schema: instantiation
  • List of allowed tuples
  • List of forbidden tuples
  • Predicates
  • Any OR algorithm
  • Solver re-entrace
gac schema1
GAC-Schema
  • Idea: tuple = solution of the constraintsupport = valid tuple- while the tuple is valid: do nothing - if the tuple is no longer valid, then search for a new support for the values it contains
  • a solution (support) can be computed by any algorithm
example
Example
  • X(C)={x1,x2,x3} D(xi)={a,b}
  • T(C)={(a,a,a),(a,b,b),(b,b,a),(b,b,b)}
example1
Example
  • X(C)={x1,x2,x3} D(xi)={a,b}
  • T(C)={(a,a,a),(a,b,b),(b,b,a),(b,b,b)}
  • Support for (x1,a): (a,a,a) is computed and (a,a,a) is added to S(x2,a) and S(x3,a), (x1,a) in (a,a,a) is marked as supported.
example2
Example
  • X(C)={x1,x2,x3} D(xi)={a,b}
  • T(C)={(a,a,a),(a,b,b),(b,b,a),(b,b,b)}
  • Support for (x1,a): (a,a,a) is computed and (a,a,a) is added to S(x2,a) and S(x3,a), (x1,a) in (a,a,a) is marked as supported.
  • Support for (x2,a): (a,a,a) is in S(x2,a) it is valid, therefore it is a support. (Multidirectionnality). No need to compute a solution
example3
Example
  • X(C)={x1,x2,x3} D(xi)={a,b}
  • T(C)={(a,a,a),(a,b,b),(b,b,a),(b,b,b)}
  • Support for (x1,a): (a,a,a) is computed and (a,a,a) is added to S(x2,a) and S(x3,a), (x1,a) in (a,a,a) is marked as supported.
  • Value a is removed from x1, then all the tuples in S(x1,a) are no longer valid: (a,a,a) for instance. The validity of the values supported by this tuple must be reconsidered.
example4
Example
  • X(C)={x1,x2,x3} D(xi)={a,b}
  • T(C)={(a,a,a),(a,b,b),(b,b,a),(b,b,b)}
  • Support for (x1,a): (a,a,a) is computed and (a,a,a) is added to S(x2,a) and S(x3,a), (x1,a) in (a,a,a) is marked as supported.
  • Support for (x1,b): (b,b,a) is computed, and updated ...
gac schema complexity
GAC-Schema: complexity
  • CC complexity to check consistency (seek in table, call to OR algorithm): seek for a Support costs CC
  • n variables, d values:for each value: CCfor all values: O(ndCC)
  • For any OR algorithm which is able to compute a solution, Arc consistency can be achieved in O(ndCC).
table constraint an example
Table Constraint: An example
  • Configuration problem:5 types of components: {glass, plastic, steel, wood, copper}3 types of bins: {red, blue, green} whose capacity is red 5, blue 5, green 6Constraints:- red can contain glass, cooper, wood- blue can contain glass, steel, cooper- green can contain plastic, copper, wood- wood require plastic; glass exclusive copper- red contains at most 1 of wood- green contains at most 2 of woodFor all the bins there is either no plastic or at least 2 plasticGiven an initial supply of 12 of glass, 10 of plastic, 8 of steel, 12 of wood and 8 of copper; what is the minimum total number of bins?
table constraint results
Table Constraint: results

#bk timestandard model 1,361,709 430

Table Constraint 12,659 9.7

semantics of a constraint
Semantics of a constraint
  • Speed-up the search for a support (solution which contain a value (x,a))
exploiting constraint semantics
Exploiting constraint semantics
  • Speed-up the search for a support (solution which contain a value (x,a)):x < y, D(x)=[0..10000], D(y)=[0..10000]support for (x,9000): immediate any value greater than 9000 in D(y)
semantics of a constraint1
Semantics of a constraint
  • Design of ad-hoc filtering algorithm:x < y : (a) max(x) = max(y) -1(b) min(y) = min(x) +1
exploiting semantics
Exploiting semantics
  • Design of ad-hoc filtering algorithm:x < y : (a) max(x) = max(y) -1(b) min(y) = min(x) +1
  • Triggering of the filtering algorithm:no possible pruning of D(x) while max(y) is not modifiedno possible pruning of D(y) while min(x) is not modified
regin s alldiff algorithm
Regin’s alldiff algorithm
  • Construct the value graph
slide69

The value graph:

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

D(x1)={1,2}

D(x2)={2,3}

D(x3)={1,3}

D(x4)={3,4}

D(x5)={2,4,5,6}

D(x6)={5,6,7}

alldiff constraint
Alldiff constraint
  • Construct a flow network
flow network
Flow network

1

2

3

4

5

6

7

Default orientation

x1

x2

x3

x4

x5

x6

s

flow network1
Flow network

1

2

3

4

5

6

7

Default orientation

x1

x2

x3

x4

x5

x6

t

s

flow network2
Flow network

1

2

3

4

5

6

7

Default orientation

x1

x2

x3

x4

x5

x6

t

s

flow network3
Flow network

(0,1)

1

2

3

4

5

6

7

Default orientation

x1

x2

x3

x4

x5

x6

(0,1)

(1,1)

t

s

(6,6)

alldiff constraint1
Alldiff constraint
  • Construct a flow network
  • Compute a feasible flow
flow network4
Flow network

(0,1)

1

2

3

4

5

6

7

Default orientation

x1

x2

x3

x4

x5

x6

(0,1)

(1,1)

t

s

(6,6)

a feasible flow
A feasible flow

(0,1)

1

2

3

4

5

6

7

Default orientation

x1

x2

x3

x4

x5

x6

(0,1)

(1,1)

t

s

(6,6)

alldiff constraint2
Alldiff constraint
  • Construct a flow network
  • Compute a feasible flow
  • Construct the residual graph
    • Reverse direction of arcs on feasible flow (that is, of red arcs)
a feasible flow1
A feasible flow

(0,1)

1

2

3

4

5

6

7

Default orientation

x1

x2

x3

x4

x5

x6

(0,1)

(1,1)

t

s

(6,6)

residual graph
Residual graph

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

s

orientation

alldiff constraint3
Alldiff constraint
  • Construct a flow network
  • Compute a feasible flow
  • Construct the residual graph
  • Compute the strongly connected components
    • Strongly connected component = maximal subgraph such that if directed path u to v, also from v to u
alldiff constraint4
Alldiff constraint
  • Construct a flow network
  • Compute a feasible flow
  • Construct the residual graph
  • Compute the strongly connected components
    • Strongly connected component = maximal subgraph such that if directed path u to v, also from v to u
    • Exists O(N) algorithm due to Tarjan (1972) = O(n+d)
residual graph1
Residual graph

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

s

orientation

residual graph2
Residual graph

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

s

orientation

alldiff constraint5
Alldiff constraint
  • Construct a flow network
  • Compute a feasible flow
  • Construct the residual graph
  • Compute the strongly connected components
    • Remove arcs of flow value 0 (i.e. black arcs) with ends belonging to two different components
residual graph3
Residual graph

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

s

orientation

residual graph4
Residual graph

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

s

orientation

gac for all different
GAC for all-different
  • Theorem

An arc is deleted from residual graph iff the associated value is not GAC

residual graph5
Residual graph

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

s

orientation

gac subproblem
GAC subproblem

The value graph:

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

D(x1)={1,2}

D(x2)={2,3}

D(x3)={1,3}

D(x4)={4}

D(x5)={5,6}

D(x6)={5,6,7}

before
Before!

The value graph:

1

2

3

4

5

6

7

x1

x2

x3

x4

x5

x6

D(x1)={1,2}

D(x2)={2,3}

D(x3)={1,3}

D(x4)={3,4}

D(x5)={2,4,5,6}

D(x6)={5,6,7}

conclusions
Conclusions
  • Vast range of global constraints
    • Cover all the areas that CP cover
    • Some very generic (e.g. all-different)
    • Some very specific (coloured cummulative ..)
  • GAC algorithms
    • Generic (GAC-schema)
    • Specific (GAC alldifferent)