740 likes | 942 Views
Constraint Programming II. March 15, 2001. Martin Henz, School of Computing, NUS www.comp.nus.edu.sg/~henz. Today. Search Components in OPL Case study: ACC 97/98 Basketball Constraint programming techniques. Review.
E N D
Constraint Programming II March 15, 2001 Martin Henz, School of Computing, NUS www.comp.nus.edu.sg/~henz
Today • Search Components in OPL • Case study: ACC 97/98 Basketball • Constraint programming techniques SMA HPC (c) NUS 15.094 Constraint Programming
Review Constraint programming is a framework for integrating three families of algorithms • Propagation algorithms • Branching algorithms • Exploration algorithms SMA HPC (c) NUS 15.094 Constraint Programming
S E N D+ M O R E= M O N E Y S {9} E {4..7} N {5..8} D {2..8} M {1} O {0} R {2..8} Y {2..8} E = 4 E 4 S {9} E {5..7} N {6..8} D {2..8} M {1} O {0} R {2..8} Y {2..8} E = 5 E 5 S {9} E {5} N {6} D {7} M {1} O {0} R {8} Y {2} S {9} E {6..7} N {7..8} D {2..8} M {1} O {0} R {2..8} Y {2..8} E 6 E = 6 SMA HPC (c) NUS 15.094 Constraint Programming
Using OPL Syntax enum Letter {S,E,N,D,M,O,R,Y}; var int l[Letter] in 0..9; solve { alldifferent(l); l[S] <> 0; l[M] <> 0; l[S]*1000 + l[E]*100 + l[N]*10 + l[D] + l[M]*1000 + l[O]*100 + l[R]*10 + l[E] = l[M]*10000 + l[O]*1000 + l[N]*100 + l[E]*10 + l[Y] }; search { forall(i in Letter ordered by increasing dsize(l[i])) tryall(v in 0..9) l[i] = v; }; All Solutions; Execution Run SMA HPC (c) NUS 15.094 Constraint Programming
Today • Search Components in OPL • Propagation Algorithms • Programming Branching • Programming Exploration • Case study: ACC 97/98 Basketball • Constraint programming techniques SMA HPC (c) NUS 15.094 Constraint Programming
Constraint Solving Given: a satisfiable constraint C and a new constraint C’. Constraint solving is deciding whether C C’ is satisfiable. Example: C: n > 2 C’: an + bn = cn SMA HPC (c) NUS 15.094 Constraint Programming
Constraint Solving Clearly, constraint solving is not possible for general constraints. Constraint programming separates constraints into • Basic constraints: constraint solving • Non-basic constraints: propagation (incomplete) SMA HPC (c) NUS 15.094 Constraint Programming
Basic Constraints in Constraint Programming • Basic constraints are conjunctions of constraints of the form X S, where S is a finite set of integers. • Constraint solving is done by intersecting domains. Example: C = X{1..10}, Y{9..20}, C’ = X{9..15}, Y{14..30}. • In practice, we keep a solved form, storing the current domain of every variable. SMA HPC (c) NUS 15.094 Constraint Programming
Basic Constraints and Propagators 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y all different(S,E,N,D, M,O,R,Y) S {1..9} E {0..9} N {0..9} D {0..9} M {1..9} O {0..9} R {0..9} Y {0..9} SMA HPC (c) NUS 15.094 Constraint Programming
Basic Constraints and Propagators 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y all different(S,E,N,D, M,O,R,Y) S {1..9} E {0..9} N {0..9} D {0..9} M {1} O {0..9} R {0..9} Y {0..9} SMA HPC (c) NUS 15.094 Constraint Programming
Basic Constraints and Propagators 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y all different(S,E,N,D, M,O,R,Y) S {2..9} E {0,2..9} N {0,2..9} D {0,2..9} M {1} O {0,2..9} R {0,2..9} Y {0,2..9} SMA HPC (c) NUS 15.094 Constraint Programming
Basic Constraints and Propagators 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y all different(S,E,N,D, M,O,R,Y) S {2..9} E {0,2..9} N {0,2..9} D {0,2..9} M {1} O {0} R {0,2..9} Y {0,2..9} and so on and so on SMA HPC (c) NUS 15.094 Constraint Programming
Basic Constraints and Propagators 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y all different(S,E,N,D, M,O,R,Y) S {9} E {5..7} N {6..8} D {2..8} M {1} O {0} R {2..8} Y {2..8} SMA HPC (c) NUS 15.094 Constraint Programming
Completeness of Propagation • Given: Basic constraint C and propagator P. • Propagation is complete, if for every variable x and every value vin the domain ofx, there is an assignment in which x=v that satisfies C and P. • Complete propagation is also called domain-consistencyorarc-consistency. SMA HPC (c) NUS 15.094 Constraint Programming
All Different: Example 1 • C: v {1,2} w {1,2,3,4,5} x {1,2,3,4,5} y {1,2,3} z {4,5} • P: alldifferent(w,x,y,z) SMA HPC (c) NUS 15.094 Constraint Programming
All Different: Example 2 • C: v {1} w {1,2,3,4,5} x {1,2,3,4,5} y {1,2,3} z {5} • P: alldifferent(w,x,y,z) SMA HPC (c) NUS 15.094 Constraint Programming
All Different: Example 2 • C: v {1} w {1,2,3,4,5} x {1,2,3,4,5} y {1,2,3} z {5} • P: alldifferent(w,x,y,z) onValue SMA HPC (c) NUS 15.094 Constraint Programming
All Different: Example 3 • C: v {1,2,3,4,5} w {1,2,3,4,5} x {1,2,3} y {1,2,3} z {1,2,3} • P: alldifferent(w,x,y,z) onValue SMA HPC (c) NUS 15.094 Constraint Programming
All Different: Example 3 • C: v {1,2,3,4,5} w {1,2,3,4,5} x {1,2,3} y {1,2,3} z {1,2,3} • P: alldifferent(w,x,y,z) onDomain SMA HPC (c) NUS 15.094 Constraint Programming
All Different: Example 3 • C: v {1,2,3,4,5} w {1,2,3,4,5} x {1,2,3} y {1,2,3} z {1,2,3} • P: alldifferent(w,x,y,z) onDomain SMA HPC (c) NUS 15.094 Constraint Programming
Complete All Different Constraint v 1 w 2 x 3 y 4 z 5 SMA HPC (c) NUS 15.094 Constraint Programming
Complete All Different Constraint Remove all edges that do not belong to a maximum matching in bipartite graph [Regin 94] v 1 w 2 x 3 y 4 z 5 SMA HPC (c) NUS 15.094 Constraint Programming
Complete All Different Constraint v 1 ...by applying maximum matching algorithm in bipartite graphs [Hopcroft, Karp 1973] O(|X|2 dmax2) w 2 x 3 y 4 z 5 SMA HPC (c) NUS 15.094 Constraint Programming
Today • Search Components in OPL • Propagation Algorithms • Programming Branching • Programming Exploration • Case study: ACC 97/98 Basketball • Constraint programming techniques SMA HPC (c) NUS 15.094 Constraint Programming
Review: Branching for MONEY enum Letter {S,E,N,D,M,O,R,Y}; var int l[Letter] in 0..9; solve { alldifferent(l); l[S] <> 0; l[M] <> 0; l[S]*1000 + l[E]*100 + l[N]*10 + l[D] + l[M]*1000 + l[O]*100 + l[R]*10 + l[E] = l[M]*10000 + l[O]*1000 + l[N]*100 + l[E]*10 + l[Y] }; search { forall(i in Letter ordered by increasing dsize(l[i])) tryall(v in 0..9) l[i] = v; }; All Solutions; Execution Run SMA HPC (c) NUS 15.094 Constraint Programming
Domain Splitting in OPL search { forall(i in Letter) while not bound(l[i]) do let m = dmid(l[i]) in try l[i] <= m | l[i] > m endtry; }; SMA HPC (c) NUS 15.094 Constraint Programming
Today • Search Components in OPL • Propagation Algorithms • Programming Branching • Programming Exploration • Case study: ACC 97/98 Basketball • Constraint programming techniques SMA HPC (c) NUS 15.094 Constraint Programming
Optimization in OPL enum Letter {S,E,N,D,M,O,T,Y}; var int l[Letter] in 0..9; maximize money subject to { money = l[M]*10000+l[O]*1000+l[N]*100+l[E]*10+l[Y] alldifferent(l); l[S] <> 0; l[M] <> 0; l[S]*1000 + l[E]*100 + l[N]*10 + l[D] + l[M]*1000 + l[O]*100 + l[S]*10 + l[T] = l[M]*10000 + l[O]*1000 + l[N]*100 + l[E]*10 + l[Y] }; search { forall(i in Letter ordered by increasing dsize(l[i])) tryall(v in 0..9) l[i] = v; }; All Solutions; Execution Run MOST MONEY SMA HPC (c) NUS 15.094 Constraint Programming
Review: Depth-first Search in OPL enum Letter {S,E,N,D,M,O,T,Y}; var int l[Letter] in 0..9; solve { alldifferent(l); l[S] <> 0; l[M] <> 0; l[S]*1000 + l[E]*100 + l[N]*10 + l[D] + l[M]*1000 + l[O]*100 + l[S]*10 + l[T] = l[M]*10000 + l[O]*1000 + l[N]*100 + l[E]*10 + l[Y] }; search { forall(i in Letter ordered by increasing dsize(l[i])) tryall(v in 0..9) l[i] = v; }; If nothing else specified, depth-first search is used. SMA HPC (c) NUS 15.094 Constraint Programming
Built-in Explorations in OPL • Depth-first search (OPL default) • Best-first search • choose the node first that has maximal (minimal) lower bound for optimization function • OPL: BFSearch(money) • Limited discrepancy search • explore search tree in order of increasing “discrepancies” • OPL: LDSearch(4) SMA HPC (c) NUS 15.094 Constraint Programming
Best-first Search for Money enum Letter {S,E,N,D,M,O,T,Y}; var int l[Letter] in 0..9; maximize money subject to { money = l[M]*10000+l[O]*1000+l[N]*100+l[E]*10+l[Y] alldifferent(l); l[S] <> 0; l[M] <> 0; l[S]*1000 + l[E]*100 + l[N]*10 + l[D] + l[M]*1000 + l[O]*100 + l[S]*10 + l[T] = l[M]*10000 + l[O]*1000 + l[N]*100 + l[E]*10 + l[Y] }; search { BFSearch(money) forall(i in Letter ordered by increasing dsize(l[i])) tryall(v in 0..9) l[i] = v; }; SMA HPC (c) NUS 15.094 Constraint Programming
Programming Explorations in OPL • Works on nodes of search tree • Uses priority queue for order of nodes • Parameterized by user-defined components SMA HPC (c) NUS 15.094 Constraint Programming
The Exploration Algorithm of OPL Boolean explore(PriorityQueue Q) { if Q.empty() { return false; } else { Node a := Q.pop(); return exploreActiveNode(a,Q); } } Boolean exploreActiveNode a, PriorityQueue Q) { if a.isFailNode() { return explore(Q); } else if a.isLeafNode() { return true; } else if a.mustBePostponed(Q) { Q.insert(a); return explore(Q); } else { Q.insert(a.getRight()); a := a.getLeft(); return exploreActiveNode (a,Q); } } SMA HPC (c) NUS 15.094 Constraint Programming
Example: Implementing Depth-First SearchStrategy myDFS() { evaluated to - OplSystem.getDepth(); postponed when OplSystem.getEvaluation() > OplSystem.getBestEvaluation(); } SMA HPC (c) NUS 15.094 Constraint Programming
Applying User-defined Exploration enum Letter {S,E,N,D,M,O,R,Y}; var int l[Letter] in 0..9; solve { alldifferent(l); l[S] <> 0; l[M] <> 0; l[S]*1000 + l[E]*100 + l[N]*10 + l[D] + l[M]*1000 + l[O]*100 + l[R]*10 + l[E] = l[M]*10000 + l[O]*1000 + l[N]*100 + l[E]*10 + l[Y] }; search { applyStrategy myDFS() forall(i in Letter ordered by increasing dsize(l[i])) tryall(v in 0..9) l[i] = v; }; SMA HPC (c) NUS 15.094 Constraint Programming
Combining Branching and Exploration search { applyStrategy myDFS() forall(i in 1..3) ordered by increasing dsize(l[i])) tryall(v in 0..9) l[i] = v; LDSearch(4) forall(i in 4..8) tryall(v in 0..9) l[i] = v; }; SMA HPC (c) NUS 15.094 Constraint Programming
Today • Search Components in OPL • Case study: ACC 97/98 Basketball • Constraint programming techniques SMA HPC (c) NUS 15.094 Constraint Programming
ACC 1997/98: A Success Story of Constraint Programming • Integer programming + enumeration, 24 hours Nemhauser, Trick: Scheduling a Major College Basketball Conference, Operations Research, 1998, 46(1) • Constraint programming, less than 1 minute. Henz: Scheduling a Major College Basketball Conference - Revisited, Operations Research, 2001, 49(1) SMA HPC (c) NUS 15.094 Constraint Programming
Round Robin Tournament Planning Problems • n teams, each playing a fixed number of times r against every other team • r = 1: single, r = 2: double round robin. • Each match is home match for one and away match for the other • Dense round robin: • At each date, each team plays at most once. • The number of dates is minimal. SMA HPC (c) NUS 15.094 Constraint Programming
The ACC 1997/98 Problem • 9 teams participate in tournament • Dense double round robin: • there are 2 * 9 dates • at each date, each team plays either home, away or has a “bye” • Alternating weekday and weekend matches SMA HPC (c) NUS 15.094 Constraint Programming
The ACC 1997/98 Problem (cont’d) • No team can play away on both last dates. • No team may have more than two away matches in a row. • No team may have more than two home matches in a row. • No team may have more than three away matches or byes in a row. • No team may have more than four home matches or byes in a row. SMA HPC (c) NUS 15.094 Constraint Programming
The ACC 1997/98 Problem (cont’d) • Of the weekends, each team plays four at home, four away, and one bye. • Each team must have home matches or byes at least on two of the first five weekends. • Every team except FSU has a traditional rival. The rival pairs are Clem-GT, Duke-UNC, UMD-UVA and NCSt-Wake. In the last date, every team except FSU plays against its rival, unless it plays against FSU or has a bye. SMA HPC (c) NUS 15.094 Constraint Programming
The ACC 1997/98 Problem (cont’d) • The following pairings must occur at least once in dates 11 to 18: Duke-GT, Duke-Wake, GT-UNC, UNC-Wake. • No team plays in two consecutive dates away against Duke and UNC. No team plays in three consecutive dates against Duke UNC and Wake. • UNC plays Duke in last date and date 11. • UNC plays Clem in the second date. • Duke has bye in the first date 16. SMA HPC (c) NUS 15.094 Constraint Programming
The ACC 1997/98 Problem (cont’d) • Wake does not play home in date 17. • Wake has a bye in the first date. • Clem, Duke, UMD and Wake do not play away in the last date. • Clem, FSU, GT and Wake do not play away in the fist date. • Neither FSU nor NCSt have a bye in the last date. • UNC does not have a bye in the first date. SMA HPC (c) NUS 15.094 Constraint Programming
Nemhauser/Trick Solution • Enumerate home/away/bye patterns • explicit enumeration (very fast) • Compute pattern sets • integer programming (below 1 minute) • Compute abstract schedules • integer programming (several minutes) • Compute concrete schedules • explicit enumeration (approx. 24 hours) Schreuder, Combinatorial Aspects of Construction of Competition Dutch Football Leagues, Discr. Appl. Math, 35:301-312, 1992. SMA HPC (c) NUS 15.094 Constraint Programming
Modeling ACC 97/98 as Constraint Satisfaction Problem Variables • 9 * 18 variables taking values from {0,1} that express which team plays home when. Example: HUNC, 5=1 means UNC plays home on date 5. • away, bye similar, e.g. AUNC, 5 or BUNC, 5 • 9 * 18 variables taking values from {0,1,...,9} that express against which team which other team plays. Example: UNC, 5 =1 means UNC plays team 1 (Clem) on date 5 SMA HPC (c) NUS 15.094 Constraint Programming
Modeling ACC 97/97 as Constraint Satisfaction Problem (cont’d) Constraints Example: No team plays away on both last dates. AClem,17 + AClem,18 < 2, ADuke,17 + ADuke,18 < 2, ... All constraints can be easily formalized in this manner. SMA HPC (c) NUS 15.094 Constraint Programming
First Step: Use Nemhauser/Trick Idea • Constraint programming for generating all patterns. • CSP representation straightforward. • computing time below 1 second (Pentium II, 233MHz) • Constraint programming for generating all pattern sets. • CSP representation straightforward. • computing time 3.1 seconds SMA HPC (c) NUS 15.094 Constraint Programming
Back to Schreuder • Constraint programming for abstract schedules • Introduce variable matrix for “abstract opponents” similar to in naïve model • there are many abstract schedules • runtime over 20 minutes • Constraint programming for concrete schedules • model somewhat complicated, using two levels of the “element” constraint • runtime several minutes SMA HPC (c) NUS 15.094 Constraint Programming