case study 5: all interval series results due to simonis, puget & regin

Post on 28-Mar-2015

218 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 seriesSn, …, 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

sequence0, 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

sequence0, 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 nSo 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 twiceFor all i . All-different([Hi1,Hi2,..,Hit])

Basic CSP model

What are the constraints?

No guest boat visits a host boat twiceFor 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 twiceFor all i . all-different([Hi1,Hi2,..,Hit])

• Host boat capacity is not exceededHmm, 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

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

top related