Title: Constraint Programming II
1Constraint Programming II
Martin Henz, School of Computing,
NUS www.comp.nus.edu.sg/henz
2Today
- Search Components in OPL
- Case study ACC 97/98 Basketball
- Constraint programming techniques
3Review
- Constraint programming is a framework for
integrating three families of algorithms - Propagation algorithms
- Branching algorithms
- Exploration algorithms
4S 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
5Using OPL Syntax
enum Letter S,E,N,D,M,O,R,Y var int lLetter
in 0..9 solve alldifferent(l) lS ltgt 0
lM ltgt 0 lS1000 lE100
lN10 lD lM1000
lO100 lR10 lE lM10000
lO1000 lN100 lE10 lY search
forall(i in Letter ordered by increasing
dsize(li)) tryall(v in 0..9)
li v ?All Solutions Execution ? Run
6Today
- Search Components in OPL
- Propagation Algorithms
- Programming Branching
- Programming Exploration
- Case study ACC 97/98 Basketball
- Constraint programming techniques
7Constraint Solving
- Given a satisfiable constraint C and a new
constraint C. - Constraint solving is deciding whether C ? C is
satisfiable. - Example
- C n gt 2
- C an bn cn
8Constraint Solving
- Clearly, constraint solving is not possible for
general constraints. - Constraint programming separates constraints into
- Basic constraints constraint solving
- Non-basic constraints propagation (incomplete)
9Basic 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.
10Basic Constraints and Propagators
1000S 100E 10N D
1000M 100O 10R E 10000M 1000O
100N 10E 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
11Basic Constraints and Propagators
1000S 100E 10N D
1000M 100O 10R E 10000M 1000O
100N 10E 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
12Basic Constraints and Propagators
1000S 100E 10N D
1000M 100O 10R E 10000M 1000O
100N 10E 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
13Basic Constraints and Propagators
1000S 100E 10N D
1000M 100O 10R E 10000M 1000O
100N 10E 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
14Basic Constraints and Propagators
1000S 100E 10N D
1000M 100O 10R E 10000M 1000O
100N 10E 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
15Completeness of Propagation
- Given Basic constraint C and propagator P.
- Propagation is complete, if for every variable x
and every value v in the domain of x, there is an
assignment in which xv that satisfies C and P. - Complete propagation is also called
- domain-consistency or arc-consistency.
16All 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)
17All 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)
18All 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
19All 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
20All 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
21All 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
22Complete All Different Constraint
v
1
w
2
x
3
y
4
z
5
23Complete 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
24Complete All Different Constraint
v
1
- ...by applying
- maximum matching algorithm in bipartite graphs
- Hopcroft,
- Karp 1973
- O(X2 dmax2)
w
2
x
3
y
4
z
5
25Today
- Search Components in OPL
- Propagation Algorithms
- Programming Branching
- Programming Exploration
- Case study ACC 97/98 Basketball
- Constraint programming techniques
26Review Branching for MONEY
enum Letter S,E,N,D,M,O,R,Y var int lLetter
in 0..9 solve alldifferent(l) lS ltgt 0
lM ltgt 0 lS1000 lE100
lN10 lD lM1000
lO100 lR10 lE lM10000
lO1000 lN100 lE10 lY search
forall(i in Letter ordered by
increasing dsize(li)) tryall(v in 0..9)
li v ?All Solutions Execution ?
Run
27Domain Splitting in OPL
search forall(i in Letter) while not
bound(li) do let m dmid(li) in
try li lt m li gt m
endtry
28Today
- Search Components in OPL
- Propagation Algorithms
- Programming Branching
- Programming Exploration
- Case study ACC 97/98 Basketball
- Constraint programming techniques
29Optimization in OPL
enum Letter S,E,N,D,M,O,T,Y var int lLetter
in 0..9 maximize money subject to money
lM10000lO1000lN100lE10lY
alldifferent(l) lS ltgt 0 lM ltgt 0
lS1000 lE100 lN10 lD
lM1000 lO100 lS10
lT lM10000 lO1000 lN100
lE10 lY search forall(i in Letter
ordered by increasing dsize(li)) tryall(v
in 0..9) li v ?All Solutions
Execution ? Run
MOST MONEY
30Review Depth-first Search in OPL
enum Letter S,E,N,D,M,O,T,Y var int lLetter
in 0..9 solve alldifferent(l) lS ltgt 0
lM ltgt 0 lS1000 lE100
lN10 lD lM1000
lO100 lS10 lT lM10000
lO1000 lN100 lE10 lY search
forall(i in Letter ordered by increasing
dsize(li)) tryall(v in 0..9)
li v If nothing else specified,
depth-first search is used.
31Built-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)
32Best-first Search for Money
enum Letter S,E,N,D,M,O,T,Y var int lLetter
in 0..9 maximize money subject to money
lM10000lO1000lN100lE10lY
alldifferent(l) lS ltgt 0 lM ltgt 0
lS1000 lE100 lN10 lD
lM1000 lO100 lS10
lT lM10000 lO1000 lN100
lE10 lY search BFSearch(money)
forall(i in Letter ordered by increasing
dsize(li)) tryall(v in 0..9)
li v
33Programming Explorations in OPL
- Works on nodes of search tree
- Uses priority queue for order of nodes
- Parameterized by user-defined components
34The 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)
-
35Example Implementing Depth-First
- SearchStrategy myDFS()
- evaluated to - OplSystem.getDepth()
- postponed when
- OplSystem.getEvaluation()
- gt
- OplSystem.getBestEvaluation()
36Applying User-defined Exploration
enum Letter S,E,N,D,M,O,R,Y var int lLetter
in 0..9 solve alldifferent(l) lS ltgt 0
lM ltgt 0 lS1000 lE100
lN10 lD lM1000
lO100 lR10 lE lM10000
lO1000 lN100 lE10 lY search
applyStrategy myDFS() forall(i in Letter
ordered by increasing dsize(li))
tryall(v in 0..9) li v
37Combining Branching and Exploration
search applyStrategy myDFS() forall(i in
1..3) ordered by increasing dsize(li))
tryall(v in 0..9) li v
LDSearch(4) forall(i in 4..8) tryall(v
in 0..9) li v
38Today
- Search Components in OPL
- Case study ACC 97/98 Basketball
- Constraint programming techniques
39ACC 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)
40Round 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.
41The 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
42The ACC 1997/98 Problem (contd)
- 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.
43The ACC 1997/98 Problem (contd)
- 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.
44The ACC 1997/98 Problem (contd)
- 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.
45The ACC 1997/98 Problem (contd)
- 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.
46Nemhauser/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, 35301-312, 1992.
47Modeling 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, 51 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
48Modeling ACC 97/97 as Constraint Satisfaction
Problem (contd)
- Constraints
- Example No team plays away on both last dates.
- AClem,17 AClem,18 lt 2, ADuke,17 ADuke,18 lt
2, ... - All constraints can be easily formalized in this
manner.
49First 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
50Back 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
51Cains 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
52Cain 1977
Schreuder 1992
53Cains 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 pGT
identifies the pattern for team GT. - Team GT plays according to pattern indicated by p
on date 2 HpGT,2HGT,2 - Implemented element(pGT,H2 , HGT,2 )
54Using Cains 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
55Friar 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/FriarTuc
k) - Implementation language Oz using Mozart (see
www.mozart-oz.org)
56Today
- Search Strategies in OPL
- Case study ACC 97/98 Basketball
- Constraint programming techniques
57Constraint Programming Techniques
- Symmetry Breaking
- Redundant Constraints
- Global Constraints
58Symmetry 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.
59Redundant Constraints
- Pruning of original model is often not sufficient
- Adding redundant constraints sometimes helps
60Example 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 Ill try
again Gosh, with adding them the price still
comes to 7.11! What were the prices of the four
items?
61Model 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
62Additional Constraints
- Redundant constraint
- Symmetries
79 is prime factor of 711. Thus without loss of
generality A divisible by 79
B ? C ? D
63Solution to Grocery Puzzle
Grocery
Grocery plus Redundancy
Grocery plus Redundancy plus Symmetry
64Example Fractions
- Find distinct non-zero digits such that the
following equation holds - A D G
- 1
- B C E F H I
65Model for Fractions
- One variable for each letter, similar to MONEY
- Constraint
- AEFHI DBCHI GBCEF
-
- BCEFHI
66Additional Constraints
A D G ? ? B C E F H I
- Symmetries
- Redundant constraints
A 3 ? 1 B C
G 3 ? 1 H I
67Fractions
Fractions plus Symmetries
Fractions plus Symmetries plus Redundancies
- Constraint
- AEFHI
- DBCHI
- GBCEF BCEFHI
- Symmetries
- AEF gt DBC
- DHI gt GEF
- Redundant Constraints
- 3A gt BC
- 3G lt HI
68Redundant Constraints
- Adding redundant constraints sometimes results
in dramatic performance improvements.
69Performance of Symmetry Breaking
- All solution search Symmetry breaking usually
improves performance often dramatically - One solution search Symmetry breaking may or may
not improve performance
70Global Constraints Hamiltonian Path
- range ChessBoard 1..64
- ChessBoard Knightmove i in ChessBoard
- j j in ChessBoard ...
- var ChessBoard jumpChessBoard
- solve
- forall(p in ChessBoard)
- jumpp in Knightmovep
- circuit(jump)
- forall(p in ChessBoard)
- sum(c in Knightmovep) (jumpc p) 1
Hamilton
71Assessment Dont Use It!
- Dont use constraint programming for
- Problems for which there are known efficient
algorithms or heuristics. Example Traveling
salesman. - Problems for which integer programming works
well. Example Many discrete assignment problems. - Problems with weak constraints and a complex
optimization function. Example Timetabling
problems.
72Assessment Do Use It!
- Use constraint programming for
- Problems for which integer programming does not
work (linear models too large). - Problems for which there are no efficient
solutions available. - Problems with tight constraints, where
propagation can be employed. Example ACC 97/98. - Problems for which strong branching algorithms
exist. Example Scheduling with unary resources.
73Myths Debunked
- A fad! Constraint programming has been used
successfully in a number of application areas,
most spectacularly in scheduling - Universal! More failure stories than success
stories. - All new! Many ideas come from AI search and
Operations Research. In particular, the important
ideas for scheduling come from OR. - Artificial Intelligence! All quite earthly
algorithms. Constraint programming systems
provide framework for different kinds of
algorithms to interact.
74Perspective
- Constraint programming will be added to the OR
tool set as a standard technique for solving
combinatorial problems, along with local search. - Constraint programming techniques will be tightly
integrated with integer programming and local
search.