padova6 - School of Computing Science
Download
Report
Transcript padova6 - School of Computing Science
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
Conclusions
Results
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
Variable for each position i
What
are the variables?
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
Variable for each position i
What
are the variables?
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
Xij or Di, doesn’t seem to matter
Which
variables to assign?
variable ordering heuristic?
Fail First or Lex?
Solving choices?
Which
Xij or Di, doesn’t seem to matter
Which
variables to assign?
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
Xij or Di, doesn’t seem to matter
Which
variables to assign?
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
Conclusions
Results
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
Introduce auxiliary variables
Decide on the 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
Group_ij is the set of s golfers assigned to
group i in period j
What
are the variables?
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},…
Break symmetry
We
can assign some values and break
some of this symmetry
Make first week: {1,2,..s}, {s+1,s+2,..2s},…
In second week: player j is in jth group
Break symmetry
Symmetry
is still left
Weeks 2 and onwards remain symmetric
Hard to post constraints to break this
• E.g. smallest player in week k who plays in the
same group as player n is smaller than smallest
player in week k+1 who plays in the same group
as player n
Recipe
Create a basic model
Introduce auxiliary variables
Decide on the variables
For messy/loose constraints
Consider dual, combined or 0/1
models
Break symmetry
Add implied constraints
Customize solver
Variable, value ordering
Alternative model
Focus
on pairs of players that play
together
Less intrinsic symmetry
Alternative model
What
are the variables?
Alternative model
What
are the variables?
Number the pairs
<1,2> is 0
<1,3> is 1
..
<1,n> is n-2
<2,3> is n-1
..
Alternative model
What
are the variables?
Number the pairs
Variable Week_k is the week that pair number
k meet
Alternative model
What
are the variables?
Number the pairs
Variable Week_k is the week that pair number
k meet
• If they never meet, it is 0
Symmetry in alternative
model
Less
symmetry
Again, no symmetry in order of players within
group
Now, no symmetry between groups in week
Indeed, groups are not explicitly named!
Constraints in alternative
model
No
pair meets twice
Implicit in assigning single value to Week_k
Groups
are closed
If i and j play together in week t, and j and k
play together in week t then i and k play
together
Lots of messy constraints
Recipe
Create a basic model
Introduce auxiliary variables
Decide on the variables
For messy/loose constraints
Consider dual, combined or 0/1
models
Break symmetry
Add implied constraints
Customize solver
Variable, value ordering
Introduce auxiliary variables
Players_ik
week k
= set of players playing with i in
Introduce auxiliary variables
Players_ik
= set of players playing with i in
week k
i belongs to Players_ik
NB still haven’t named groups
Introduce auxiliary variables
Players_ik
= set of players playing with i in
week k
i belongs to Players_k
Combine
with initial model
Combined model
Express
constraints in model where they
are easiest!
Channelling constraints to link models
Week_k=t with k=<i,j> implies
Players_it=Players_jt
Week_k/=t with k=<i,j> implies Players_it
intersect Players_jt = {}
Combined model
Express
constraints in model where they
are easiest!
Channelling constraints to link models
Week_k=t with k=<i,j> implies
Players_it=Players_jt
Week_k/=t with k=<i,j> implies Players_it
intersect Players_jt = {}
NB build in knowledge about transitivity
Recipe
Create a basic model
Introduce auxiliary variables
Decide on the variables
For messy/loose constraints
Consider dual, combined or 0/1
models
Break symmetry
Add implied constraints
Customize solver
Variable, value ordering
Implied constraints
Take
a group from any week, {g1,..gs}
In any other week, these players must be
spread over exactly s groups
Adds significant overhead but can be useful
on certain problems
Week symmetry
Excuse
the pun (week/weak)
We devised a model without groups
Eliminating group symmetry
We
still have lots of week symmetry
Can we model without weeks?
Week symmetry
Excuse
the pun (week/weak)
We devised a model without groups
Eliminating group symmetry
We
still have lots of week symmetry
Can we model without weeks?
Surprisingly, yes
Model is convoluted but gives good results
First model to solve Kirkman’s schoolgirls
problel
3rd Model
What
are the variables?
AllPairs_k is the set of all pairs playing with
pair k (k=<i,j>)
3rd Model
What
are the variables?
AllPairs_k is the set of all pairs playing with
pair k (k=<i,j>)
• k belongs to AllPairs_k
3rd Model
What
are the variables?
AllPairs_k is the set of all pairs playing with
pair k (k=<i,j>)
SameWeek_k is the set of all pairs playing in
the same week as k
3rd Model
What
are the variables?
AllPairs_k is the set of all pairs playing with
pair k (k=<i,j>)
SameWeek_k is the set of all pairs playing in
the same week as k
PlayersWithPair_k is the set of individual
players playing with k
3rd Model
What
are the variables?
AllPairs_k is the set of all pairs playing with
pair k (k=<i,j>)
SameWeek_k is the set of all pairs playing in
the same week as k
PlayersWithPair_k is the set of individual
players playing with k
• If k=<i,j> then i and j belong to PlayersWithPair_k
3rd Model
What
are the variables?
AllPairs_k is the set of all pairs playing with
pair k (k=<i,j>)
PairsSameWeek_k is the set of all pairs
playing in the same week as k
PlayersWithPair_k is the set of individual
players playing with k
PlaySameWeek_kk’ is 1 iff k and k’ play in
same week and 0 otherwise
Channelling
We
can channel back to the 2nd model
if Week_k=Week_k’ then
• PairsSameWeek_k = PairsSameWeek_k’
If Week_k/=Week_k’ then
• PairsSameWeek_k intersect PairsSameWeek_k’ =
{}
…
Symmetry remaining
Players
are still symmetrical
Can assign first week
{1,2,..s},{s+1,..,2s},…
Conclusions
Constraints
can improve your golf!
Set variables are useful for modelling
Eliminate symmetry
Alternatively,
we can channel into a model
with less symmetry
Even if it is cumbersome, it can help
More
about set variables and global (nonbinary) constraints on set variables next
week