Constraint Patterns

67
Constraint Patterns Toby Walsh 4C, UCC & Uppsala

description

Constraint Patterns. Toby Walsh 4C, UCC & Uppsala. - PowerPoint PPT Presentation

Transcript of Constraint Patterns

Constraint Patterns

Toby Walsh4C, UCC & Uppsala

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?

BA

Matrix symmetry

Two identical bins

Matrix symmetry

6 items to pack into bins: 3 41 652

BA

Matrix symmetry

1 2

3

65

4

BA

One packing

Matrix symmetry

BA

1

3

5

2

6

4

Another packing

Matrix symmetry

How do we eliminate such symmetry?

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

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

Output of CGRASS

x1 < x2 x2 < x3 x1 x3

z0 = x1 – x2 z1 = x2 – x3 z2 = x3 – x1

Alldiff(z0, z1, z2)

Constraint patterns repository

4c.ucc.ie/patterns Catalog of patterns Mailing list Links …

How you can help Submit your patterns

now!

Conclusions

Constraint patterns Useful way to describe

modelling expertise MatrixModel,

MatrixSymmetry, DualModel, ImpliedConstraints, …

How you can help Send me your patterns!