- 72 Views
- Uploaded on
- Presentation posted in: General

Constraint Programming: modelling

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

Constraint Programming: modelling

Toby Walsh

NICTA and UNSW

- Mark ticks on a ruler
- Distance between any two ticks (not just neighbouring ticks) is distinct

- Applications in radio-astronomy, cystallography, …
- http://www.csplib.org/prob/prob006

- Simple solution
- Exponentially long ruler
- Ticks at 0,1,3,7,15,31,63,…

- Goal is to find minimal length rulers
- turn optimization problem into sequence of satisfaction problems
Is there a ruler of length m?

Is there a ruler of length m-1?

….

- turn optimization problem into sequence of satisfaction problems

- Known for up to 23 ticks
- Distributed internet project to find large rulers
0,1

0,1,3

0,1,4,6

0,1,4,9,11

0,1,4,10,12,17

0,1,4,10,18,23,25

Solutions grow as approximately O(n^2)

- Variable, Xi for each tick
- Value is position on ruler
- Naïve model with quaternary constraints
- For all i>j,k>l>j |Xi-Xj| \= |Xk-Xl|

- Large number of quaternary constraints
- O(n^4) constraints

- Looseness of quaternary constraints
- Many values satisfy |Xi-Xj| \= |Xk-Xl|
- Limited pruning

- Introduce auxiliary variables for inter-tick distances
- Dij = |Xi-Xj|
- O(n^2) ternary constraints

- Post single large non-binary constraint
- alldifferent([D11,D12,…]).
- Tighter constraints and denser constraint graph

- Symmetry
- A ruler can always be reversed!
- Break this symmetry by adding constraint:
D12 < Dn-1,n

- Also break symmetry on Xi
X1 < X2 < … Xn

- Such tricks important in many problems

- Additional (implied) constraints
- Don’t change set of solutions
- But may reduce search significantly
E.g. D12 < D13, D23 < D24, …

E.g. D1k at least sum of first k integers

- Pure declarative specifications are not enough!

- Labeling strategies often very important
- Smallest domain often good idea
- Focuses on “hardest” part of problem

- Best strategy for Golomb ruler is instantiate variables in strict order
- Heuristics like fail-first (smallest domain) not effective on this problem!

- Circular (or modular) Golomb rulers
- Inter-tick distance variables more central, removing rotational symmetry?

- 2-d Golomb rulers
All examples of “graceful” graphs

- Modelling decisions:
- Auxiliary variables
- Implied constraints
- Symmetry breaking constraints

- More to constraints than just declarative problem specifications!

Case study 2: all interval series

- Prob007 at www.csplib.org
- Comes from musical composition
- Traced back to Alban Berg
- Extensively used by Ernst Krenek
Op.170 “Quaestio temporis”

- Take the 12 standard pitch classes
- c, c#, d, ..
- Represent them by numbers 0, .., 11

- Find a sequence so each occurs once
- Each difference occurs once

- Can generalize to any n (not just 12)
Find Sn, a permutation of [0,n)

such that |Sn+1-Sn| are all distinct

- Finding one solution is easy

- Can generalize to any n (not just 12)
Find Sn, a permutation of [0,n) such that |Sn+1-Sn| are all distinct

- Finding one solution is easy
[n,1,n-1,2,n-2,.., floor(n/2)+2,floor(n/2)-1,floor(n/2)+1,floor(n/2)]

Giving the differences [n-1,n-2,..,2,1]

Challenge is to find all solutions!

- Devise basic CSP model
- What are the variables? What are the constraints?

- Introduce auxiliary variables if needed
- Consider dual or combined models
- Break symmetry
- Introduce implied constraints

- What are the variables?

- What are the variables?
Si = j if the ith note is j

- What are the constraints?

- What are the variables?
Si = j if the ith note is j

- What are the constraints?
Si in [0,n)

All-different([S1,S2,… Sn])

Forall i<i’ |Si+1 - Si| =/ |Si’+1 - Si’|

Will this model be any good? If so, why?

If not, why not?

- Devise basic CSP model
- What are the variables? What are the constraints?

- Introduce auxiliary variables if needed
- Consider dual or combined models
- Break symmetry
- Introduce implied constraints

- Is it worth introducing any auxiliary variables?
- Are there any loose or messy constraints we could better (more compactly?) express via some auxiliary variables?

- Is it worth introducing any auxiliary variables?
- Yes, variables for the pairwise differences
Di = |Si+1 - Si|

- Now post single large all-different constraint
Di in [1,n-1]

All-different([D1,D2,…Dn-1])

- Yes, variables for the pairwise differences

- Devise basic CSP model
- What are the variables? What are the constraints?

- Introduce auxiliary variables if needed
- Consider dual or combined models
- Break symmetry
- Introduce implied constraints

- Does the problem have any symmetry?

- Does the problem have any symmetry?
- Yes, we can reverse any sequence
S1, S2, … Sn is an all-inverse series

Sn, …, S2, S1 is also

- Yes, we can reverse any sequence
- How do we eliminate this symmetry?

- Does the problem have any symmetry?
- Yes, we can reverse any sequence
S1, S2, …, Sn is an all-inverse series

Sn, …, S2, S1 is also

- Yes, we can reverse any sequence
- How do we eliminate this symmetry?
- As with Golomb ruler!
D1 < Dn-1

- As with Golomb ruler!

- Does the problem have any other symmetry?

- Does the problem have any other symmetry?
- Yes, we can invert the numbers in any sequence
0, n-1, 1, n-2, … map x onto n-1-x

n-1, 0, n-2, 1, …

- How do we eliminate this symmetry?

- Yes, we can invert the numbers in any sequence

- Does the problem have any other symmetry?
- Yes, we can invert the numbers in any sequence
0, n-1, 1, n-2, … map x onto n-1-x

n-1, 0, n-2, 1, …

- How do we eliminate this symmetry?
S1 < S2

- Yes, we can invert the numbers in any sequence

- Devise basic CSP model
- What are the variables? What are the constraints?

- Introduce auxiliary variables if needed
- Consider dual or combined models
- Break symmetry
- Introduce implied constraints

- Are there useful implied constraints to add?

- Are there useful implied constraints to add?
- Hmm, unlike Golomb ruler, we only have neighbouring differences
- So, no need to consider transitive closure

- Are there useful implied constraints to add?
- Hmm, unlike Golomb ruler, we are not optimizing
- So, no need to improve propagation for optimization variable

- Basic model is poor
- Refined model able to compute all solutions up to n=14 or so
- GAC on all-different constraints very beneficial
- As is enforcing GAC on Di = |Si+1-Si|
This becomes too expensive for large n

So use just bounds consistency (BC) for larger n

Case study 3: orthogonal Latin squares

- Many different ways to model even simple problems
- Combining models can be effective
- Channel between models

- Need additional constraints
- Symmetry breaking
- Implied (but logically) redundant

- Each colour appears once on each row
- Each colour appears once on each column
- Used in experimental design
- Six people
- Six one-week drug trials

- Find a pair of Latin squares
- Every cell has a different pair of elements

- Generalized form:
- Find a set of m Latin squares
- Each possible pair is orthogonal

1 2 3 4 1 2 3 4

2 1 4 3 3 4 1 2

3 4 1 2 4 3 2 1

4 3 2 1 2 1 4 3

11 22 33 44

23 14 41 32

34 43 12 21

42 31 24 13

Two 4 by 4 Latin squares

No pair is repeated

- Introduced by Euler in 1783
- Also called Graeco-Latin or Euler squares

- No orthogonal Latin square of order 2
- There are only 2 (non)-isomorphic Latin squares of order 2 and they are not orthogonal

- Euler conjectured in 1783 that there are no orthogonal Latin squares of order 4n+2
- Constructions exist for 4n and for 2n+1
- Took till 1900 to show conjecture for n=1
- Took till 1960 to show false for all n>1

- 6 by 6 problem also known as the 36 officer problem
“… Can a delegation of six regiments, each of which sends a colonel, a lieutenant-colonel, a major, a captain, a lieutenant, and a sub-lieutenant be arranged in a regular 6 by 6 array such that no row or column duplicates a rank or a regiment?”

- Lam’s problem
- Existence of finite projective plane of order 10
- Equivalent to set of 9 mutually orthogonal Latin squares of order 10
- In 1989, this was shown not to be possible after 2000 hours on a Cray (and some major maths)

- Orthogonal Latin squares also used in experimental design

- Suitable for integer programming
- Xijkl = 1 if pair (i,j) is in row k column l, 0 otherwise
- Avoiding advice never to use more than 3 subscripts!

- Constraints
- Each row contains one number in each square
Sum_jl Xijkl = 1 Sum_il Xijkl = 1

- Each col contains one number in each square
Sum_jk Xijkl = 1 Sum_ik Xijkl = 1

- Each row contains one number in each square

- Additional constraints
- Every pair of numbers occurs exactly once
Sum_kl Xijkl = 1

- Every cell contains exactly one pair of numbers
Sum_ij Xijkl = 1

Is there any symmetry?

- Every pair of numbers occurs exactly once

- Important for solving CSPs
- Especially for proofs of optimality?

- Orthogonal Latin square has lots of symmetry
- Permute the rows
- Permute the cols
- Permute the numbers 1 to n in each square

- How can we eliminate such symmetry?

- Fix first row
11 22 33 …

- Fix first column
11

23

32

..

- Eliminates all symmetry?

- Exploit large finite domains possible in CSPs
- Reduce number of variables
- O(n^4) -> ?

- Exploit non-binary constraints
- Problem states that squares contain pairs that are all different
- All-different is a non-binary constraint our solvers can reason with efficiently

- 2 sets of variables
- Skl = i if the 1st element in row k col l is i
- Tkl = j if the 2nd element in row k col l is j

- How do we specify all pairs are different?
- All distinct (k,l), (k’,l’)
if Skl = i and Tkl = j then Sk’l’=/ i or Tk’l’ =/ j

O(n^4) loose constraints, little constraint propagation!

What can we do?

- All distinct (k,l), (k’,l’)

- Introduce auxiliary variables
- Fewer constraints, O(n^2)
- Tightens constraint graph => more propagation
- Pkl = i*n + j if row k col l contains the pair i,j

- Constraints
- 2n all-different constraints on Skl, and on Tkl
- All-different constraint on Pkl
- Channelling constraint to link Pkl to Skl and Tkl

CSP model

3n^2 variables

Domains of size n, n and n^2+n

O(n^2) constraints

Large and tight non-binary constraints

0/1 model

n^4 variables

Domains of size 2

O(n^4) constraints

Loose but linear constraints

Use IP solver!

- Variables to assign
- Skl and Tkl, or Pkl?

- Variable and value ordering
- How to treat all-different constraint
- GAC using Regin’s algorithm O(n^4)
- AC using the binary decomposition

- Experience and small instances suggest:
- Assign the Skl and Tkl variables
- Choose variable to assign with Fail First (smallest domain) heuristic
- Break ties by alternating between Skl and Tkl

- Use GAC on all-different constraints for Skl and Tkl
- Use AC on binary decomposition of large all-different constraint on Pkl

Case study 4: Langford’s problem

- Prob024 @ www.csplib.org
- Find a sequence of 8 numbers
- Each number [1,4] occurs twice
- Two occurrences of i are i numbers apart

- Unique solution
- 41312432

- L(k,n) problem
- To find a sequence of k*n numbers [1,n]
- Each of the k successive occrrences of i are i apart
- We just saw L(2,4)

- Due to the mathematician Dudley Langford
- Watched his son build a tower which solved L(2,3)

- L(2,3) and L(2,4) have unique solutions
- L(2,4n) and L(2,4n-1) have solutions
- L(2,4n-2) and L(2,4n-3) do not
- Computing all solutions of L(2,19) took 2.5 years!

- L(3,n)
- No solutions: 0<n<8, 10<n<17, 20, ..
- Solutions: 9,10,17,18,19, ..
A014552

Sequence: 0,0,1,1,0,0,26,150,0,0,17792,108144,0,0,39809640,326721800,

0,0,256814891280,2636337861200

- What are the variables?

- What are the variables?
Variable for each occurrence of a number

X11 is 1st occurrence of 1

X21 is 1st occurrence of 2

..

X12 is 2nd occurrence of 1

X22 is 2nd occurrence of 2

..

- Value is position in the sequence

- What are the constraints?
- Xij in [1,n*k]
- Xij+1 = i+Xij
- Alldifferent([X11,..Xn1,X12,..Xn2,..,X1k,..Xnk])

- Create a basic model
- Decide on the variables

- Introduce auxiliary variables
- For messy/loose constraints

- Consider dual, combined or 0/1 models
- Break symmetry
- Add implied constraints
- Customize solver
- Variable, value ordering

- Does the problem have any symmetry?

- Does the problem have any symmetry?
- Of course, we can invert any sequence!

- How do we break this symmetry?

- How do we break this symmetry?
- Many possible ways
- For example, for L(3,9)
- Either X92 < 14 (2nd occurrence of 9 is in 1st half)
- Or X92=14 and X82<14 (2nd occurrence of 8 is in 1st half)

- Create a basic model
- Decide on the variables

- Introduce auxiliary variables
- For messy/loose constraints

- Consider dual, combined or 0/1 models
- Break symmetry
- Add implied constraints
- Customize solver
- Variable, value ordering

- Can we take a dual view?

- Can we take a dual view?
- Of course we can, it’s a permutation!

- What are the variables?
- Variable for each position i

- What are the values?

- What are the variables?
- Variable for each position i

- What are the values?
- If use the number at that position, we cannot use an all-different constraint
- Each number occurs not once but k times

- What are the variables?
- Variable for each position i

- What are the values?
- Solution 1: use values from [1,n*k] with the value i*n+j standing for the ith occurrence of j
- Now want to find a permutation of these numbers subject to the distance constraint

- What are the variables?
- Variable for each position i

- What are the values?
- Solution 2: use as values the numbers [1,n]
- Each number occurs exactly k times
- Fortunately, there is a generalization of all-different called the global cardinality constraint (gcc) for this

- Gcc([X1,..Xn],l,u) enforces values used by Xi to occur between l and u times
- All-different([X1,..Xn]) = Gcc([X1,..Xn],1,1)

- Regin’s algorithm enforces GAC on Gcc in O(n^2.d)
- Regin’s papers are tough to follow but this seems to beat his algorithm for all-different!?

- What are the constraints?
- Gcc([D1,…Dk*n],k,k)
- Distance constraints?

- What are the constraints?
- Gcc([D1,…Dk*n],k,k)
- Distance constraints:
- Di=j then Di+j+1=j

- Primal and dual variables
- Channelling to link them
- What do the channelling constraints look like?

- Primal and dual variables
- Channelling to link them
- Xij=k implies Dk=i

- Which variables to assign?
- Xij or Di

- Which variables to assign?
- Xij or Di, doesn’t seem to matter

- Which variable ordering heuristic?
- Fail First or Lex?

- Which variables to assign?
- Xij or Di, doesn’t seem to matter

- Which variable ordering heuristic?
- Fail First very marginally better than Lex

- Create a basic model
- Decide on the variables

- Introduce auxiliary variables
- For messy/loose constraints

- Consider dual, combined or 0/1 models
- Break symmetry
- Add implied constraints
- Customize solver
- Variable, value ordering