# Case study 5: all interval series Results due to Simonis, Puget & Regin.

## Presentation on theme: "Case study 5: all interval series Results due to Simonis, Puget & Regin."— Presentation transcript:

Case study 5: all interval series Results due to Simonis, Puget & Regin

All interval series Prob007 at www.csplib.orgwww.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 wouldnt 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 dont meet twice constraints more compactly/efficiently via some auxiliary variables?

Improving basic CSP model Is it worth introducing any auxiliary variables? Could we express dont meet twice constraints more compactly/efficiently via some auxiliary variables? Yes, of course. I wouldnt 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

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, of course. The world is full of symmetry!

Break symmetry Host boats of the same capacity are symmetric Guest boats of the same crew size are symmetric Guest boat symmetry is more important than host boat. Why?

Break symmetry Does the problem have any other symmetry?

Break symmetry Does the problem have any other symmetry? Yes, of course. Time periods are symmetric

Break symmetry How do we deal with symmetry of time periods?

Break symmetry How do we deal with symmetry of time periods? Largest guest boat visits host boats in order Similar trick to assigning first row of orthogonal Latin square Why largest?

Break symmetry Guest boats with the same crew size are symmetric How do we break this symmetry?

Break symmetry Guest boats with the same crew size are symmetric If j<k have same crew size then Hj1 <= Hk1

Break symmetry Guest boats with the same crew size are symmetric If j<k have same crew size then Hj1 <= Hk1 They might still meet at t=1! We cannot rule this out If they do, we still have this symmetry

Break symmetry Guest boats with the same crew size are symmetric If j<k have same crew size then Hj1 <= Hk1 They might still meet at t=1! Hj1<Hk1 or Hj2<Hk2 They cannot meet at t=1 and t=2

Break symmetry Host boats with the same capacity are symmetric How do we break this symmetry?

Break symmetry Host boats with the same capacity are symmetric Partial solution If j<k have identical capacity, then guest boat 1 visits k implies it also visits j

Break symmetry Host boats with the same capacity are symmetric Partial solution If j<k have identical capacity, then guest boat 1 visits k implies it also visits j Can you improve on this?

Solving choices Which variables to branch on? Hit, Vijt or Mijt ?

Solving choices Which variables to branch on? Hit and let others follow What variable ordering heuristic

Solving choices Which variables to branch on? Hit and let others follow What variable ordering heuristic Fail first What value ordering?

Solving choices Which variables to branch on? Hit and let others follow What variable ordering heuristic Fail first What value ordering? Host boats by their spare capacity Alias succeed first

Performance Party held before problem solved! 13 hosts, 29 guests, 6 time periods Heuristic tweaked to assign each period in turn Solution found for 7 period problem They could have partied longer 12 host problem easy to show insoluble Simple capacity argument

Conclusions Constraint programming can improve your social life! Modelling is an art but there are patterns Develop basic model Use auxiliary variables to represent constraints compactly/efficiently Consider dual, combined and 0/1 models Break symmetry Add implied constraints

Download ppt "Case study 5: all interval series Results due to Simonis, Puget & Regin."

Similar presentations