1 / 74

Constraint Programming II

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.

marlie
Télécharger la présentation

Constraint Programming II

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Constraint Programming II March 15, 2001 Martin Henz, School of Computing, NUS www.comp.nus.edu.sg/~henz

  2. Today • Search Components in OPL • Case study: ACC 97/98 Basketball • Constraint programming techniques SMA HPC (c) NUS 15.094 Constraint Programming

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. Complete All Different Constraint v 1 w 2 x 3 y 4 z 5 SMA HPC (c) NUS 15.094 Constraint Programming

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. Example: Implementing Depth-First SearchStrategy myDFS() { evaluated to - OplSystem.getDepth(); postponed when OplSystem.getEvaluation() > OplSystem.getBestEvaluation(); } SMA HPC (c) NUS 15.094 Constraint Programming

  36. 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

  37. 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

  38. Today • Search Components in OPL • Case study: ACC 97/98 Basketball • Constraint programming techniques SMA HPC (c) NUS 15.094 Constraint Programming

  39. 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

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. 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

  48. 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

  49. 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

  50. 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

More Related