Constraint Patterns Toby Walsh 4C, UCC & Uppsala
Dec 30, 2015
Thanks
Fahiem Bacchus, David Basin, Christian Bessiere, Alan Bundy, Xinguang Chen, Berthe Choueiry, Elizabeth Churchill, Dave Clarke, Simon Colton, Joe Culberson, Carmel Domshlak, Pierre Flener, Jeremy Frank, Alan Frisch, Ian Gent, Fausto Giunchiglia, Ian Green, Emmanel Hebrard, Brahim Hnich, Holger Hoos, Zeynep Kiziltan, Ewan MacIntyre, Suresh Manandhar, Pedro Meseguer, Ian Miguel, Alex Nunes, Justin Pearson, Patrick Prosser, Francesca Rossi, Roberto Sebastiani, Paul Shaw, Dan Sheridan, John Slaney, Barbara Smith, Graham Steel, Kostas Stergiou, Armagan Tarim, Neven Tomov, Peter van Beek, Hans van Maaren, Brent Venable, Adolfo Villafiorita, Tetsuya Yoshida
Thanks
Funding agenciesSFI, EPSRC, SERC, EU, Royal Society, British Council
Universities & Research Institutes
4C, UCC, Uppsala Univ, ANU, Univ. of York, Strathclyde Univ., Edinburgh Univ., Univ. of Genova, IRST, INRIA
Outline
Design patterns Constraint patterns
Matrix model Matrix symmetry Dual model Implied constraints
Constraint pattern repository How to help
Patterns
Christopher Alexander Professor of architecture
(UC Berkeley) A Pattern Language
OUP, 1977 Patterns document the
implicit knowledge people need when designing buildings
Patterns
151. Small Meeting RoomsMay be part of University (43),
Town Hall (44), Office (146) .. Conflict
The larger meetings are, the less people get out of them
ResolutionMake at least 70% of all meeting
rooms really small, for 12 or less. Locate them in the most public parts, evenly scattered among the workplaces
Design patterns
Design Patterns: Elements of Reusable OO Software Eric Gamma, Richard
Helm, Ralph Johnson & John Vlissides (aka Gang of Four)
1998 Dr Dobb’s Journal Excellence in Programming award
Design patterns
A recurring solution to a standard problem
Patterns have a context in which they apply
They must balance a set of opposing forces
Design patterns
Mechanism for describing best practice & good design
Well engineered code exhibits many common patterns
Design patterns support and encourage good software engineering
So you want to be an America’s Cup helmsman?
Learn the rules Port tack gives way to
starboard, ...
Learn basic principles Cover tack to protect any
lead, … Study past races to learn
winning patterns Riding a gust to overtake on a
downwind leg, …
So you want to be a good software engineer?
Learn the rules Algorithms, data structures, …
Learn basic principles Data abstraction, …
Study other software engineers to learn winning patterns Construct an iterator method so
elements of a compound object can be accessed without exposing the underlying representation
Constraint patterns
Record recurring patterns in constraint models
Deal with complex, interacting forces
Capture knowledge of expert modellers
Smith in a Box
Benefits Help tackle modelling
“bottleneck”
Toolkits extended to support common patterns Row & col symmetry
Pattern automation Implied constraint
generation
Possible drawbacks Hard work
Effort of community not one individual
Modelling will remain an art New problems often have
unique feature or combination of features
Patterns are not executable But we can automate aspects
of them
Constraint pattern
Pattern name Context
Circumstances in which pattern occurs Problem
Specific problem pattern solves Forces
Opposing considerations when deciding a solution Solution Example
Matrix models
Context for many constraint patterns
Itself a pattern!
Constraint program with array(s) of decision variables
Matrix models
Often the problem has a matrix in the specification
Many timetabling and scheduling problems Mike Trick schedules the
College baseball league using a matrix model
Matrix models
Common in other applications Even if the matrix is
not so obvious in the problem specification
Matrix models
Warehouse location problem What warehouses to build to
supply a set of stores?
Prob034 in CSPLib Problem (and solution)
taken from OPL manual
Warehouse location
0..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..1
Store
WarehouseSupply
0..1 0..1 0..1 0..1
OpenWarehouse
Warehouse location
Each store has a warehouse: sum(i,Supply[i,j])=1
Warehouse capacity:sum(j,Supply[i,j]) <= c[i]
Channelling constraints:Supply[i,j] <= Open[i]
Optimization variable:Cost = sum(i,sum(j,Supply[i,j]*dist[i,j])) +
c*sum(i,Open[i])
0..1 0..1 0..1 0..1
Open Warehouse
0..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..1
Store
WarehouseSupply
Matrix model: spot the difference!
0..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..1
Store
WarehouseSupply
0..1 0..1 0..1 0..1
Open
=1=1…
<c1 <c2 …
Matrix model: spot the difference!
0..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..10..1 0..1 0..1 0..1
Course
PeriodsSched
0..m 0..m 0..m 0..m
Load
=1=1…
l<<d l<<d …
Balance academic curriculum problem
Very similar matrix model Channelling now to
weighted sum Optimization var
changes Exploit these patterns
Provide high level primitives
To state such problems compactly
To reason effectively
Matrix model pattern Pattern name: MatrixModel Context
An informal problem specification Problem
Decision variables which occur at repeated time periods, locations, … Forces
Similar constraints are posted on these variablesDifferent data applies to the different locations, periods, …
SolutionConsider a model with an array of decision variables.Input the data as a separate array
ExampleWarehouse location problem (prob034 in CSPLib)
Diversity of matrix models
Combinatorial problems BIBDs, magic squares,
projective planes, … Design
Rack configuration, template and slab design, …
Scheduling Classroom, social golfer, …
Assignment Warehouse location,
progressive party, …
Why use this pattern?
Ease of problem statement Side constraints Variable indexing
Improved constraint propagation Symmetry breaking Linear models
Two (new) lines of research?
Matrix operations should become first class objects in CP
MATLAB & EXCEL could be extended into a constraint modelling languages
Matrix models
Common constraints: Row or column sum Weighted row/col sum Single non-zero entry Matrix sum Scalar product Channelling Ordering rows/matrices
This pretty much describes all the examples!
These constraints should be provided as language primitives?
Efficient and powerful propagators developed?
Ease of problem statement
Steel mill slab design Prob038 in CSPLib
Nasty “colour” constraint Stops it being simple knapsack
problem
Channel into matrix model Colour constraint easily and
efficiently stated
23
1 1 1 1 12
1
a b c d e f g h i
Steel mill slab design
3 possible slab sizes (1, 3 or 4) 2 colours per slab
23
111
1
1
1
f
g i
e
c d
b
h
a
(size 4) (size 3) (size 1)(size 1)(size 3) (size 1)
2
Example solution
Matrix model
23
1 1 1 1 12
1oa ob oc od oe of og oh oi
oa ob oc od oe of og oh oi
s1 1
s2 1
…
Red Green Blue Orange Brown
s1 1
s2 1
…sum(j,Order[i,j])=1, sum(i,Order[i,j]*w[i])<Size[j]
sum(i,Colour[i,j])<2
Example solution
oa ob oc od oe of og oh oi
s1 1 0 0 0 0 0 0 1 0
s2 0 1 0 0 0 0 0 0 0
s3 0 0 0 0 1 1 1 0 0
s4 0 0 1 0 0 0 0 0 0
… 0 0 0 1 0 0 0 0 0
Red Green Blue Orange Brown
s1 1 0 0 0 1
s2 0 1 0 0 0
s3 0 0 0 1 0
s4 0 1 0 0 0
… 0 0 1 0 0
23
111
1
1
1
f
g i
e
c d
b
h
a
2
Variable indexing
Use variables to index into arrays Element constraint Typically reduces number of constraints needed by
the domain size of the variable index
Hooker (and others) argue that such indexing is one of the major advantages CP has over IP
Improved propagation
Matrix models for warehouse locationSupply[store]=warehouse
orSupply[store,warehouse]=1
Warehouse capacity constraint Difficult to state in 1-dCard({j|Supply[j]=i}) < c[i] Difficult to propagate
Improved propagation
Matrix models for warehouse locationSupply[store]=warehouse
orSupply[store,warehouse]=1
Warehouse capacity constraint Difficult to state in 1-dCard({j|Supply[j]=i}) < c[i] Difficult to propagate
2-d model purely linear!
Matrix symmetry pattern
Often rows/cols in a decision matrix are symmetric All weeks (cols) can
be permuted in a timetable
All slabs (rows) of same size can be permuted
Why the baby?
Matrix model
1 2 3 4 5 6
A 1 0 1 0 1 0
B 0 1 0 1 0 1
1 2 3 4 5 6
A 0 1 0 1 0 1
B 1 0 1 0 1 0
135
2
64a)
b)
A B
BA135
2
64
Matrix model
1 2 3 4 5 6
A 1 0 1 0 1 0
B 0 1 0 1 0 1
1 2 3 4 5 6
A 0 1 0 1 0 1
B 1 0 1 0 1 0
135
2
64a)
b)
A B
BA135
2
64
If we insist that row A lex row
B, we remove a) from the solution set.
Row symmetry Such row symmetry frequently occurs Add constraint to order rows lexicographically
Total order => eliminates all row symmetry
Efficient & effective global constraints GAC(X <lex Y) [Frisch, Hnich, Kiziltan, Miguel, Walsh, 02]
GAC(X0 <lex X1 <lex … <lex Xn) [Carlsson & Beldiceanu, 02]
Optimal, linear in number of variables
0 0 0 0 1 1 1
0 0 1 1 0 0 1
0 1 0 1 0 1 0
0 1 1 0 1 0 0
1 0 0 1 1 0 0
1 0 1 0 0 1 0
1 1 0 0 0 0 1
<7,7,3,3,1>
Matrix symmetry
Symmetry in multiple dimensions
Balanced incomplete block design v rows. b columns. r 1s per row. k 1s per column. s is scalar product
between every pair of rows.
Prob028 in CSPLib
Matrix symmetry
Lex order both rows and columns Lex order must be in same direction
Called “double LEX” Extends to higher dimensions
A B C
D E F
G H I
A B C
D E F
G H I
A B C
D E F
G H I
A B C
D E F
G H I
Consistent Consistent
Inconsistent Inconsistent
Double LEX leaves symmetry
01
01
10
01
10
10
Swap 2 columnsSwap row 1 and 3
Surprising as lex ordering rows breaks all row symmetry, & lex ordering cols breaks all col symmetry!
Matrix symmetry
All symmetry can be broken When variables take distinct values
Simply push largest value to a particular corner Order 1st row and 1st col
0/1 variables, 1 occurs once in each row/col Double LEX then leaves an unique solution
Matrix symmetry pattern Pattern name: MatrixSymmetry Context
A matrix model with partial row and/or column symmetry. Problem
Symmetry increases the size of the search space. Forces
Eliminating all symmetry can be too expensive.Elimination no symmetry can leave too much search.
SolutionConsider posting lex ordering constraints on symmetric rows/colsAlternatively post lex ordering in one dimension, and multiset in other
ExampleBalanced incomplete block design (prob028 in CSPLib)
Dealing with matrix symmetry
Active research areaBreaking Row and Column Symmetries in
Matrix Models, CP02
Global Constraints for Lexicographic Orderings, CP02
Multiset Ordering Constraints, IJCAI-03
Constraints for Breaking more Row and Column Symmetries, CP03
Generic SBDD using GAP and ECLIPSE, CP03
Symmetry Breaking for Matrix Models using Stabilizers, CP03
….
Dual model pattern
Often choice for the decision variables? Consider scheduling
the World Cup. Are Vars=games,
vals=times or Vars=times,
vals=games ?
TSP problem = find permutation of cities which makes a tour of minimum length
Permutation problems
|vars|=|vals| each var has unique val
Many examples scheduling timetabling routing assignment problems
Permute vars for vals which do we choose?
Dual model pattern Pattern name: DualModel Context
An informal problem specification. Problem
Choosing between a primal & an alternative dual viewpoint. Forces
Certain constraints can be easier to post on primal or dual.Certain constraint can propagate better on primal or dual.
SolutionConsider combined model with channelling between primal & dual variables.
ExampleBalanced academic curriculum problem (prob030 in CSPLib)
Implied constraints pattern Pattern name: ImpliedConstraints Context
A basic constraint model. Problem
Search going down obviously futile branches. Forces
Overhead of introducing additional constraints.Applicability of the new implied constraints.
SolutionIntroduce implied constraints that prune such branches.
ExampleGolomb ruler problem (prob006 in CSPLib)
Model transformation
Can greatly reduce the effort of solving a problem
Experts work hard to identify useful transformations, e.g. Adding implied constraints. Breaking symmetry. Removing redundant constraints. Replacing constraints with their logical equivalents.
CGRASS
Constraint GeneRation And Symmetry-breaking. Designed to automate the task of finding useful
model transformations. Based on, and extends, Bundy’s proof planning.
Modelling expertise captured by methods. Methods selectively applied to transform the problem.
[Frisch, Miguel, Walsh, 02]
Golomb ruler problem
Place n ticks at integer points on a ruler of length m All inter-tick distances unique
Astronomy, crystallography Previously, implied constraints added by
hand [Smith et al ‘00]
Input to CGRASS
x1 x2 x1 x3 x2 x3
x1 - x2 x2 – x1 x1- x2 x2 – x3 x1- x2 x3 – x1
x1 - x3 x2 – x1 x1- x3 x3 – x1 x1- x3 x3 – x2
x2 - x1 x3 – x2 x2 - x3 x3 – x1 x2 - x3 x3 – x2
Constraint patterns repository
4c.ucc.ie/patterns Catalog of patterns Mailing list Links …
How you can help Submit your patterns
now!