Constraint programming modelling
This presentation is the property of its rightful owner.
Sponsored Links
1 / 84

Constraint Programming: modelling PowerPoint PPT Presentation


  • 60 Views
  • Uploaded on
  • Presentation posted in: General

Constraint Programming: modelling. Toby Walsh NICTA and UNSW. Golomb rulers. 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. Golomb rulers. Simple solution

Download Presentation

Constraint Programming: modelling

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


Constraint programming modelling

Constraint Programming: modelling

Toby Walsh

NICTA and UNSW


Golomb rulers

Golomb rulers

  • 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


Golomb rulers1

Golomb rulers

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

      ….


Optimal golomb rulers

Optimal Golomb rulers

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


Modelling the golomb ruler

Modelling the Golomb ruler

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


Problems with na ve model

Problems with naïve model

  • Large number of quaternary constraints

    • O(n^4) constraints

  • Looseness of quaternary constraints

    • Many values satisfy |Xi-Xj| \= |Xk-Xl|

    • Limited pruning


A better non binary model

A better non-binary model

  • 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


Other modeling issues

Other modeling issues

  • 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


Other modelling issues

Other modelling issues

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


Solving issues

Solving issues

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


Experimental results

Experimental results


Something to try at home

Something to try at home?

  • Circular (or modular) Golomb rulers

    • Inter-tick distance variables more central, removing rotational symmetry?

  • 2-d Golomb rulers

    All examples of “graceful” graphs


Summary

Summary

  • Modelling decisions:

    • Auxiliary variables

    • Implied constraints

    • Symmetry breaking constraints

  • More to constraints than just declarative problem specifications!


Case study 2 all interval series

Case study 2: all interval series


All interval series

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”


All interval series1

All interval series

  • 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


All interval series2

All interval series

  • 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


All interval series3

All interval series

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


Basic methodology

Basic methodology

  • 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


Basic csp model

Basic CSP model

  • What are the variables?


Basic csp model1

Basic CSP model

  • What are the variables?

    Si = j if the ith note is j

  • What are the constraints?


Basic csp model2

Basic CSP model

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


Basic methodology1

Basic methodology

  • 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


Improving basic csp model

Improving basic CSP model

  • Is it worth introducing any auxiliary variables?

    • Are there any loose or messy constraints we could better (more compactly?) express via some auxiliary variables?


Improving basic csp model1

Improving basic CSP model

  • 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])


Basic methodology2

Basic methodology

  • 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


Break symmetry

Break symmetry

  • Does the problem have any symmetry?


Break symmetry1

Break 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

  • How do we eliminate this symmetry?


Break symmetry2

Break 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

  • How do we eliminate this symmetry?

    • As with Golomb ruler!

      D1 < Dn-1


Break symmetry3

Break symmetry

  • Does the problem have any other symmetry?


Break symmetry4

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


Break symmetry5

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

      S1 < S2


Basic methodology3

Basic methodology

  • 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


Implied constraints

Implied constraints

  • Are there useful implied constraints to add?


Implied constraints1

Implied constraints

  • Are there useful implied constraints to add?

    • Hmm, unlike Golomb ruler, we only have neighbouring differences

    • So, no need to consider transitive closure


Implied constraints2

Implied constraints

  • Are there useful implied constraints to add?

    • Hmm, unlike Golomb ruler, we are not optimizing

    • So, no need to improve propagation for optimization variable


Performance

Performance

  • 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

Case study 3: orthogonal Latin squares


Modelling decisions

Modelling decisions

  • 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


Latin square

Latin square

  • 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


Orthogonal latin squares

Orthogonal Latin squares

  • 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


Orthogonal latin squares1

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

Orthogonal Latin squares


History of orthogonal latin squares

History of (orthogonal) Latin squares

  • 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


History of orthogonal latin squares1

History of (orthogonal) Latin squares

  • 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?”


More background

More background

  • 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


A simple 0 1 model

A simple 0/1 model

  • 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


A simple 0 1 model1

A simple 0/1 model

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


Symmetry removal

Symmetry removal

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


Symmetry removal1

Symmetry removal

  • Fix first row

    11 22 33 …

  • Fix first column

    11

    23

    32

    ..

  • Eliminates all symmetry?


What about a csp model

What about a CSP model?

  • 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


Csp model

CSP model

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


Csp model1

CSP model

  • 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 v o 1 model

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!

CSP model v O/1 model


Solving choices for csp model

Solving choices for CSP model

  • 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


Good choices for the csp model

Good choices for the CSP model

  • 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


Performance1

Performance


Case study 4 langford s problem

Case study 4: Langford’s problem


Langford s problem

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


Langford s problem1

Langford’s problem

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


Langford s problem2

Langford’s problem

  • 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


Basic model

Basic model

  • What are the variables?


Basic model1

Basic model

  • 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


Basic model2

Basic model

  • What are the constraints?

    • Xij in [1,n*k]

    • Xij+1 = i+Xij

    • Alldifferent([X11,..Xn1,X12,..Xn2,..,X1k,..Xnk])


Recipe

Recipe

  • 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


Break symmetry6

Break symmetry

  • Does the problem have any symmetry?


Break symmetry7

Break symmetry

  • Does the problem have any symmetry?

    • Of course, we can invert any sequence!


Break symmetry8

Break symmetry

  • How do we break this symmetry?


Break symmetry9

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


Recipe1

Recipe

  • 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


What about dual model

What about dual model?

  • Can we take a dual view?


What about dual model1

What about dual model?

  • Can we take a dual view?

  • Of course we can, it’s a permutation!


Dual model

Dual model

  • What are the variables?

    • Variable for each position i

  • What are the values?


Dual model1

Dual model

  • 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


Dual model2

Dual model

  • 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


Dual model3

Dual model

  • 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


Global cardinality constraint

Global cardinality constraint

  • 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!?


Dual model4

Dual model

  • What are the constraints?

    • Gcc([D1,…Dk*n],k,k)

    • Distance constraints?


Dual model5

Dual model

  • What are the constraints?

    • Gcc([D1,…Dk*n],k,k)

    • Distance constraints:

      • Di=j then Di+j+1=j


Combined model

Combined model

  • Primal and dual variables

  • Channelling to link them

    • What do the channelling constraints look like?


Combined model1

Combined model

  • Primal and dual variables

  • Channelling to link them

    • Xij=k implies Dk=i


Solving choices

Solving choices?

  • Which variables to assign?

    • Xij or Di


Solving choices1

Solving choices?

  • Which variables to assign?

    • Xij or Di, doesn’t seem to matter

  • Which variable ordering heuristic?

    • Fail First or Lex?


Solving choices2

Solving choices?

  • Which variables to assign?

    • Xij or Di, doesn’t seem to matter

  • Which variable ordering heuristic?

    • Fail First very marginally better than Lex


Recipe2

Recipe

  • 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


  • Login