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.

Download Presentation

Case study 5: all interval series

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.

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

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