790 likes | 955 Vues
This case study delves into Langford's Problem, which seeks a unique sequence of numbers where each number appears twice with specific spacing. We outline the problem and illustrate modeling techniques, including a basic model, refined model, and dual model to tackle constraints effectively. The study also presents experimental results and discusses symmetry breaking and variable ordering strategies for optimization. Finally, we conclude with insights on computational approaches to finding unique solutions like L(2,4) and the complexities involved in larger instances.
E N D
Case study 7: Langford’s problem Model due to Barbara Smith
Outline • Introduction • Langford’s problem • Modelling it as a CSP • Basic model • Refined model • Experimental Results • Conclusions
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
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 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 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 • What are the variables?
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 model • What are the constraints? • Xij in [1,n*k] • Xij+1 = i+Xij • Alldifferent([X11,..Xn1,X12,..Xn2,..,X1k,..Xnk])
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 symmetry • Does the problem have any symmetry?
Break symmetry • Does the problem have any symmetry? • Of course, we can invert any sequence!
Break symmetry • How do we break this symmetry?
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)
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? • Can we take a dual view?
What about dual model? • Can we take a dual view? • Of course we can, it’s a permutation!
Dual model • What are the variables? • Variable for each position i • What are the values?
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 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 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 • 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 model • What are the constraints? • Gcc([D1,…Dk*n],k,k) • Distance constraints?
Dual model • What are the constraints? • Gcc([D1,…Dk*n],k,k) • Distance constraints: • Di=j then Di+j+1=j
Combined model • Primal and dual variables • Channelling to link them • What do the channelling constraints look like?
Combined model • Primal and dual variables • Channelling to link them • Xij=k implies Dk=i
Solving choices? • Which variables to assign? • Xij or Di
Solving choices? • Which variables to assign? • Xij or Di, doesn’t seem to matter • Which variable ordering heuristic? • Fail First or Lex?
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 • How to deal with the permutation constraint? • GAC on the all-different • AC on the channelling • AC on the decomposition
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 • How to deal with the permutation constraint? • AC on the channelling is often best for time
Conclusions • Modelling is an art but there are patterns • Develop basic model • Decide on the variables and their values • Use auxiliary variables to represent constraints compactly/efficiently • Consider dual, combined and 0/1 models • Break symmetry • Add implied constraints • Customize solver for your model
Case study 8: social golfers problem Model again due to Barbara Smith
Outline • Introduction • Social golfers problem • Modelling it as a CSP • Basic model • Refined model • Experimental Results • Conclusions
Social golfers problem • Prob013 @ www.csplib.org • 32 golfers wish to play in 8 groups of 4 each week • No two play in the same group more than once • How many weeks can they play?
Social golfers problem • Prob013 @ www.csplib.org • 32 golfers wish to play in 8 groups of 4 each week • No two play in the same group more than once • How many weeks can they play? • 9 weeks and this is optimal
Social golfers problem • Of course, generalize problem to g groups of s players over w weeks • Kirkman’s schoolgirls’ problem [Lady’s & Gentleman’s Diary 1850] “… a schoolmistress was in the habit of taking her girls for a daily walk. The girls were 15 in number, and were arranged in 5 rows of 3 each, so that each girl might have 2 companions. The problem is to so dispose them so that for 7 consecutive days no girl will walk with any of her school-fellows in a triplet twice …” This is equivalent to social golfers problem of 5 groups of 3 players over 7 weeks
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
Basic model • What are the variables?
Basic model • What are the variables? • Group_ij is the set of s golfers assigned to group i in period j • But I haven’t shown you set variables before!
Set variables • CSP variables can range over (finite) domains like integers • X1 is 1, 2, 3 or 4 • Or over sets of (finite) domains • Y1 is {}, {1}, {2}, or {1,2}
Set variables • CSP variables can range over (finite) domains like integers • X1 is 1, 2, 3 or 4 • Or over sets of (finite) domains • Y1 is {}, {1}, {2}, or {1,2} • Usually set operations can be posted as constraints on these set variables • Y1 subset Z1, Y1 intersect Z1 = {}, 1 in Y1, …
Set variables • Set variables are potentially expensive to reason about • If X1 is a subset of Y1, then X1 has exponentially many possible values • Compromise • CSP solvers just maintain upper and lower bounds on set variable • {} subseteq X1 subseteq {1,2}
Set variables • Set variables are potentially expensive to reason about • If X1 is a subset of Y1, then X1 has exponentially many possible values • Compromise • CSP solvers just maintain upper and lower bounds on set variable • {} subseteq X1 subseteq {1,2} • We loose the ability to represent disjunction E.g. X1= {1} or X1={2} but X1=/ {1,2}
Basic model • What are the variables? • Group_ij is the set of s golfers assigned to group i in period j • What are constraints?
Basic model • What are the variables? • Group_ij is the set of s golfers assigned to group i in period j • What are constraints? • Size of group, |Group_ij|=s • Groups do not overlap, Group_ij intersect Group_i’j={} • Never meet twice, for j<l . | Group_ij intersect Group_kl | <= 1
Break symmetry • What symmetry does the problem have?
Break symmetry • What symmetry does the problem have? • Lots! • Players are symmetrical • Groups are symmetrical • Weeks are symmetrical
Break symmetry • What symmetry does the problem have? • Lots! • Players are symmetrical • Groups are symmetrical • Weeks are symmetrical • Set variables saved us worrying about order within group
Break symmetry • We can assign some values and break some of this symmetry
Break symmetry • We can assign some values and break some of this symmetry • Make first week: {1,2,..s}, {s+1,s+2,..2s},…