710 likes | 866 Views
Case study 5: all interval series. Results due to Simonis, Puget & Regin. 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 series.
E N D
Case study 5: all interval series Results due to Simonis, Puget & Regin
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 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 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 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 • 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 • What are the variables?
Basic CSP model • What are the variables? Si = j if the ith note is j • What are the constraints?
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 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 • 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 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 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
Dual or combined model? • Would a dual model be useful?
Dual or combined model? • Would a dual model be useful? • We already have GAC on permutations so not there! • Would an 0/1 model be useful?
Dual or combined model? • Would a dual model be useful? • We already have GAC on permutations so not there! • Would an 0/1 model be useful? • No obvious benefits here?
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 • Does the problem have any symmetry?
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 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 symmetry • Does the problem have any other symmetry?
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 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 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 • Are there useful implied constraints to add?
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 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 • 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 6: progressive party problem Model due to Barabra Smith
Progressive party problem • Progressive does not mean “hippy”! • But people progress round the party • Yacht club party • Small number of host boats • Crews of other boats circulate round the hosts
Progressive party problem • There are h hosts, and g guests • Each host boat has a maximum capacity of people • Each guest boat has a crew size • In each of t time periods • Each guest boat visits one of the h hosts • Subject to capacity constraints on hosts • In addition, no two guests should meet twice and no guest visit the same host twice
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 • What are the variables?
Basic CSP model • What are the variables? • Hit = j if guest boat i visits host j at time t • Why not the “dual” model of which guest visits host j at time t?
Basic CSP model • What are the variables? • Hit = j if guest boat i visits host j at time t • Why not the “dual” model of which guest visits host j at time t? But several guests visit each host so would need to deal with set of guests for each host?
Basic CSP model • What are the constraints? • No guest boat visits a host boat twice For all i . All-different([Hi1,Hi2,..,Hit])
Basic CSP model • What are the constraints? • No guest boat visits a host boat twice For all i . All-different([Hi1,Hi2,..,Hit]) • Host boat capacity is not exceeded
Basic CSP model • What are the constraints? • No guest boat visits a host boat twice For all i . all-different([Hi1,Hi2,..,Hit]) • Host boat capacity is not exceeded Hmm, hosts are values to Hit variables so would need to look at all Hit variables simultaneously!
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 • Is it worth introducing any auxiliary variables? • Could we express capacity constraints via some auxiliary variables?
Improving basic CSP model • Is it worth introducing any auxiliary variables? • Could we express capacity constraints via some auxiliary variables? • Of course, I wouldn’t be asking the question otherwise
Improving basic CSP model • Introduce auxiliary 0/1 variables that can be summed • Vijt = 1 iff Hit=j
Improving basic CSP model • Introduce auxiliary 0/1 variables that can be summed • Vijt = 1 iff Hit=j • Capacity constraint now easy to specify: • Sum_i Vijt * crew_i <= capacity_j where crew_i is crew size of boat j and capacity_j is capacity of host boat j
What about other constraints? • Still have to specify that no two guest boats meet twice
What about other constraints? • Still have to specify that no two guest boats meet twice • Quantify over all pairs of guest, all host boats and all time periods • O(g^2 h t) constraints
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 • Is it worth introducing any auxiliary variables? • Could we express “don’t meet twice” constraints more compactly/efficiently via some auxiliary variables?
Improving basic CSP model • Is it worth introducing any auxiliary variables? • Could we express “don’t meet twice” constraints more compactly/efficiently via some auxiliary variables? • Yes, of course. I wouldn’t be asking otherwise!
Improving CSP model • Introduce auxiliary 0/1 variables to represent meetings • Mklt = 1 iff Hkt=Hlt • I.e. if guest k meets guest l at time t
Improving CSP model • Introduce auxiliary 0/1 variables to represent meetings • Mklt = 1 iff Hkt=Hlt • I.e. if guest k meets guest l at time t • Meeting constraints easily specified • Sum_t Mklt <= 1