Presentation is loading. Please wait.

Presentation is loading. Please wait.

A Second Look at Constraint Programming February 17/18, 2000.

Similar presentations


Presentation on theme: "A Second Look at Constraint Programming February 17/18, 2000."— Presentation transcript:

1 A Second Look at Constraint Programming February 17/18, 2000

2 SMA HPC (c) NUS 15.094 Constraint Programming2 Today  Fundamentals  Case study: ACC 97/98 Basketball  Constraint programming techniques

3 SMA HPC (c) NUS 15.094 Constraint Programming3 Thursday/Friday  Applying constraint programming to job- shop and other scheduling problems  Evaluation of constraint programming

4 SMA HPC (c) NUS 15.094 Constraint Programming4 Review Constraint programming is a framework for integrating three families of algorithms  Propagation algorithms  Branching algorithms  Exploration algorithms

5 SMA HPC (c) NUS 15.094 Constraint Programming5 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} S  {9} E  {5..7} N  {6..8} D  {2..8} M  {1} O  {0} R  {2..8} Y  {2..8} E = 4 E  4 S  {9} E  {6..7} N  {7..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} E = 6 E  6

6 SMA HPC (c) NUS 15.094 Constraint Programming6 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

7 SMA HPC (c) NUS 15.094 Constraint Programming7 Today  Fundamentals  Case study: ACC 97/98 Basketball  Constraint programming techniques

8 SMA HPC (c) NUS 15.094 Constraint Programming8 Fundamentals  Constraint solving  Basic constraints and propagators  Completeness of propagation

9 SMA HPC (c) NUS 15.094 Constraint Programming9 Constraint Problems A constraint problem consists of:  number of variables: n  constraints: c 1,…,c m   n The problem is to find a = (v 1,…,v n )   n such that a  c i, for all 1  i  m

10 SMA HPC (c) NUS 15.094 Constraint Programming10 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’: a n + b n = c n

11 SMA HPC (c) NUS 15.094 Constraint Programming11 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)

12 SMA HPC (c) NUS 15.094 Constraint Programming12 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.

13 SMA HPC (c) NUS 15.094 Constraint Programming13 Basic Constraints and Propagators S  {1..9} E  {0..9} N  {0..9} D  {0..9} M  {1..9} O  {0..9} R  {0..9} Y  {0..9} all different(S,E,N,D, M,O,R,Y) 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y

14 SMA HPC (c) NUS 15.094 Constraint Programming14 Basic Constraints and Propagators S  {1..9} E  {0..9} N  {0..9} D  {0..9} M  {1} O  {0..9} R  {0..9} Y  {0..9} all different(S,E,N,D, M,O,R,Y) 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y

15 SMA HPC (c) NUS 15.094 Constraint Programming15 Basic Constraints and Propagators 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} all different(S,E,N,D, M,O,R,Y) 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y

16 SMA HPC (c) NUS 15.094 Constraint Programming16 Basic Constraints and Propagators 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} all different(S,E,N,D, M,O,R,Y) 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y and so on

17 SMA HPC (c) NUS 15.094 Constraint Programming17 Basic Constraints and Propagators S  {9} E  {5..7} N  {6..8} D  {2..8} M  {1} O  {0} R  {2..8} Y  {2..8} all different(S,E,N,D, M,O,R,Y) 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E = 10000*M + 1000*O + 100*N + 10*E + Y

18 SMA HPC (c) NUS 15.094 Constraint Programming18 Completeness of Propagation  Given: Basic constraint C and propagator P.  Propagation is complete, if for every variable x and every value v  dom c (x), there is an assignment in which x=v that satisfies C and P.  Complete propagation is also called domain-consistency or arc-consistency.

19 SMA HPC (c) NUS 15.094 Constraint Programming19 Example: Complete All Different  C: w  {1,2,3,4} x  { 2,3,4} y  { 2,3,4} z  { 2,3,4}  P: alldifferent(w,x,y,z)

20 SMA HPC (c) NUS 15.094 Constraint Programming20 Example: Complete All Different  C: w  {1,2,3,4} x  { 2,3,4} y  { 2,3,4} z  { 2,3,4}  P: alldifferent(w,x,y,z)  Most efficient known algorithm: O(|X| 2 d max 2 ) Regin [1994], using graph matching

21 SMA HPC (c) NUS 15.094 Constraint Programming21 Today  Fundamentals  Case study: ACC 97/98 Basketball  Constraint programming techniques

22 SMA HPC (c) NUS 15.094 Constraint Programming22 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, to appear

23 SMA HPC (c) NUS 15.094 Constraint Programming23 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.

24 SMA HPC (c) NUS 15.094 Constraint Programming24 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

25 SMA HPC (c) NUS 15.094 Constraint Programming25 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.

26 SMA HPC (c) NUS 15.094 Constraint Programming26 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.

27 SMA HPC (c) NUS 15.094 Constraint Programming27 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.

28 SMA HPC (c) NUS 15.094 Constraint Programming28 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.

29 SMA HPC (c) NUS 15.094 Constraint Programming29 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.

30 SMA HPC (c) NUS 15.094 Constraint Programming30 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: H UNC, 5 =1 means UNC plays home on date 5.  away, bye similar, e.g. A UNC, 5 or B UNC, 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

31 SMA HPC (c) NUS 15.094 Constraint Programming31 Modeling ACC 97/97 as Constraint Satisfaction Problem (cont’d) Constraints Example: No team plays away on both last dates. A Clem,17 + A Clem,18 < 2, A Duke,17 + A Duke,18 < 2,... All constraints can be easily formalized in this manner.

32 SMA HPC (c) NUS 15.094 Constraint Programming32 First Step: Back to Nemhauser/Trick!  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

33 SMA HPC (c) NUS 15.094 Constraint Programming33 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

34 SMA HPC (c) NUS 15.094 Constraint Programming34 Cain’s Model  Alternative to last two phases of Nemhauser/Trick  Assign teams to patterns in a given pattern set.  Assign opponent teams for each team and date. W.O. Cain, Jr, The computer-assisted heuristic approach used to schedule the major league baseball clubs, Optimal Strategies in Sports, North-Holland, 1977

35 35 Dates1 2 3 4 5 6 Pattern 1H A B A H B Pattern 2B H A B A H Pattern 3A B H H B A Cain 1977 Schreuder 1992 Dates1 2 3 4 5 6 DynamoH A B A H B SpartaB H A B A H Vitesse A B H H B A Dates1 2 3 4 5 6 Team 1 3H 2A B 3A 2H B Team 2 B 1H 3A B 1A 3H Team 3 1A B 2H 1H B 2A Dates1 2 3 4 5 6 DynamoVH SA B VA SH B SpartaB DH VA B DA VH Vitesse DA B VH DH B VA

36 SMA HPC (c) NUS 15.094 Constraint Programming36 Cain’s Model in CP: main idea  Remember: matrices H, A, B represent patterns and matrix  represents opponents  Given: matrices H, A, B of 0/1 values representing given pattern set.  Vector p of variables ranging from 1 to n; p GT identifies the pattern for team GT.  Team GT plays according to pattern indicated by p on date 2: H p GT,2 = H GT,2  Implemented: element(p GT,H 2, H GT,2 )

37 SMA HPC (c) NUS 15.094 Constraint Programming37 Using Cain’s Model in CP  Model for Cain simpler than model for Schreuder  Runtimes:  patterns to teams: 33 seconds  opponent team assignment: 20.7 seconds  overall runtime for all 179 solutions: 57.1 seconds

38 SMA HPC (c) NUS 15.094 Constraint Programming38 Friar Tuck  Constraint programming tool for sport scheduling, ACC 97/98 just one instance  Convenient entry of constraints through GUI  Friar Tuck is distributed under GPL  Friar Tuck 1.1 available for Unix and Windows 95/98 ( www.comp.nus.edu.sg/~henz/projects/FriarTuck )  Implementation language: Oz using Mozart (see www.mozart-oz.org)

39 SMA HPC (c) NUS 15.094 Constraint Programming39 Today  Fundamentals  Case study: ACC 97/98 Basketball  Constraint programming techniques

40 SMA HPC (c) NUS 15.094 Constraint Programming40 Constraint Programming Techniques  Symmetry Breaking  Redundant Constraints  Global Constraints

41 SMA HPC (c) NUS 15.094 Constraint Programming41 Symmetry Breaking Often, the most efficient model admits many different solutions that are essentially the same (“symmetric” to each other). Symmetry breaking tries to improve the performance of search by eliminating such symmetries.

42 SMA HPC (c) NUS 15.094 Constraint Programming42 Redundant Constraints  Pruning of original model is often not sufficient  Adding redundant constraints sometimes helps

43 SMA HPC (c) NUS 15.094 Constraint Programming43 Example: Grocery Puzzle A kid goes into a grocery store and buys four items. The cashier charges $7.11, the kid pays and is about to leave when the cashier calls the kid back, and says “Hold on, I multiplied the four items instead of adding them; I’ll try again… Gosh, with adding them the price still comes to $7.11”! What were the prices of the four items?

44 SMA HPC (c) NUS 15.094 Constraint Programming44 Model for Grocery Puzzle  Variables A, B, C, D represent prices of items in cents.  Constraints:  A + B + C + D = 711  A * B * C * D = 711 * 100 * 100 * 100

45 SMA HPC (c) NUS 15.094 Constraint Programming45 Additional Constraints B  C  D 79 is prime factor of 711. Thus without loss of generality: A divisible by 79  Redundant constraint  Symmetries

46 SMA HPC (c) NUS 15.094 Constraint Programming46 Solution to Grocery Puzzle Grocery plus Redundancy Grocery plus Redundancy plus Symmetry

47 SMA HPC (c) NUS 15.094 Constraint Programming47 Example: Fractions Find distinct non-zero digits such that the following equation holds: A D G + + = 1 B C E F H I

48 SMA HPC (c) NUS 15.094 Constraint Programming48 Model for Fractions  One variable for each letter, similar to MONEY  Constraint A*E*F*H*I + D*B*C*H*I + G*B*C*E*F = B*C*E*F*H*I

49 SMA HPC (c) NUS 15.094 Constraint Programming49 Additional Constraints A D G  B C E F H I A 3 *  1 B C G 3 *  1 H I  Symmetries  Redundant constraints

50 SMA HPC (c) NUS 15.094 Constraint Programming50  Constraint A*E*F*H*I + D*B*C*H*I + G*B*C*E*F = B*C*E*F*H*I  Symmetries A*E*F >= D*B*C D*H*I >= G*E*F  Redundant Constraints 3*A >= B*C 3*G =< H*I Fractions plus Symmetries Fractions plus Symmetries plus Redundancies

51 SMA HPC (c) NUS 15.094 Constraint Programming51 Redundant Constraints Adding redundant constraints sometimes results in dramatic performance improvements.

52 SMA HPC (c) NUS 15.094 Constraint Programming52 Performance of Symmetry Breaking  All solution search: Symmetry breaking usually improves performance; often dramatically  One solution search: Symmetry breaking may or may not improve performance

53 SMA HPC (c) NUS 15.094 Constraint Programming53 “Global” Constraints: Euler Tour range ChessBoard 1..64; {ChessBoard} Knightmove[ i in ChessBoard] = { j | j in ChessBoard :... }; var ChessBoard jump[ChessBoard]; solve { forall(p in ChessBoard) jump[p] in Knightmove[p]; circuit(jump); forall(p in ChessBoard) sum(c in Knightmove[p]) (jump[c] = p) = 1; }; Euler

54 SMA HPC (c) NUS 15.094 Constraint Programming54 Today  Fundamentals  Case study: ACC 97/98 Basketball  Constraint programming techniques

55 SMA HPC (c) NUS 15.094 Constraint Programming55 Thursday/Friday  Applying constraint programming to job- shop and other scheduling problems  Evaluation of constraint programming


Download ppt "A Second Look at Constraint Programming February 17/18, 2000."

Similar presentations


Ads by Google