Top Banner
THE CONSTRAINT PROGRAMMER’S TOOLBOX Christian Schulte, SCALE, KTH & SICS
118

chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Apr 30, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

THE CONSTRAINT PROGRAMMER’S TOOLBOX Christian Schulte, SCALE, KTH & SICS

Page 2: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Programming

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

2

What is constraint programming?

Sudoku is constraint programming

11/8/2013

Page 3: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

...is constraint programming!

Sudoku 3

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 4: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Sudoku

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

4

Assign blank fields digits such that: digits distinct per rows, columns, blocks

9

2

2 5

9

7 3

6

2

6 9

7

4 9

1

8

6 3

4

6 8

1

8

11/8/2013

Page 5: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Sudoku

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

5

Assign blank fields digits such that: digits distinct per rows, columns, blocks

9

2

2 5

9

7 3

6

2

6 9

7

4 9

1

8

6 3

4

6 8

1

8

11/8/2013

Page 6: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Sudoku

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

6

Assign blank fields digits such that: digits distinct per rows, columns, blocks

9

2

2 5

9

7 3

6

2

6 9

7

4 9

1

8

6 3

4

6 8

1

8

11/8/2013

Page 7: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Block Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

7

No field in block can take digits 3,6,8

8

6 3

11/8/2013

Page 8: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Block Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

8

No field in block can take digits 3,6,8 propagate to other fields in block

Rows and columns: likewise

1,2,4,5,7,9 8 1,2,4,5,7,9

1,2,4,5,7,9 6 3

1,2,4,5,7,9 1,2,4,5,7,9 1,2,4,5,7,9

11/8/2013

Page 9: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

9

Prune digits from fields such that: digits distinct per rows, columns, blocks

9

2

2 5

9

7 3

6

2

6 9

7

4 9

1

8

6 3

4

6 8

1

8

1,2,3,4,5,6,7,8,9

11/8/2013

Page 10: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

10

Prune digits from fields such that: digits distinct per rows, columns, blocks

9

2

2 5

9

7 3

6

9 6

2

7

1

9 4

8

6 3

4

6 8

1

8

1,3,5,6,7,8

11/8/2013

Page 11: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

11

Prune digits from fields such that: digits distinct per rows, columns, blocks

9

2 9

5 2

7 3

6

2

6 9

7

4 9

1

8

6 3

8 6

4 1

8

1,3,6,7

11/8/2013

Page 12: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

12

Prune digits from fields such that: digits distinct per rows, columns, blocks

9

2

2 5

9

7 3

6

2

6 9

7

4 9

1

8

6 3

4

6 8

1

8

1,3,6

11/8/2013

Page 13: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Iterated Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

13

Iterate propagation for rows, columns, blocks What if no assignment: search... later

9

2

2 5

9

7 3

6

2

6 9

7

4 9

1

8

6 3

4

6 8

1

8

11/8/2013

Page 14: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Sudoku is Constraint Programming

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

14

Modeling: variables, values, constraints Solving: propagation, search

9

2

2 5

9

7 3

6

2

6 9

7

4 9

1

8

6 3

4

6 8

1

8

Variables: fields take values: digits maintain set of

possible values

Constraints: distinct

relation among values for variables

11/8/2013

Page 15: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Programming

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

15

Variable domains finite domain integer, finite sets, multisets, intervals, ...

Constraints

distinct, arithmetic, scheduling, graphs, ...

Solving propagation, search, ...

Modeling

variables, values, constraints, heuristics, symmetries, ...

11/8/2013

Page 16: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

This Talk...

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

16

Key concepts constraint propagation

search

The Constraint Programmer’s Toolbox.. Some few tools

global constraints: distinct reconsidered branching heuristics: bin packing user-defined constraints: personnel rostering

Summary essence of constraint programming and (very few)

resources

11/8/2013

Page 17: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Key Concepts 17

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 18: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Running Example: SMM

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

18

Find distinct digits for letters such that

SEND

+ MORE

= MONEY

11/8/2013

Page 19: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Model for SMM

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

19

Variables: S,E,N,D,M,O,R,Y {0,…,9}

Constraints: distinct(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

S0 M0

11/8/2013

Page 20: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Solving SMM

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

20

Find values for variables

such that all constraints satisfied

11/8/2013

Page 21: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Finding a Solution

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

21

Compute with possible values rather than enumerating assignments

Prune inconsistent values constraint propagation

Search

branch: define shape of search tree explore: explore search tree for solution

11/8/2013

Page 22: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

constraint store propagators constraint propagation

Constraint Propagation 22

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 23: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Store

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

23

Maps variables to possible values

x{1,2,3,4} y{1,2,3,4} z{1,2,3,4}

11/8/2013

Page 24: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Store

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

24

Maps variables to possible values other domains: finite sets, float intervals, graphs, ...

x{1,2,3,4} y{1,2,3,4} z{1,2,3,4}

finite domain constraints

11/8/2013

Page 25: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagators

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

25

Implement constraints

distinct(x1, …, xn) x + 2×y = z

schedule(t1, …, tn)

11/8/2013

Page 26: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagators

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

26

Strengthen store by constraint propagation prune values in conflict with implemented constraint

x{1,2,3,4} y{1,2,3,4} z{1,2,3,4}

distinct(x, y, z) x + y = 3

11/8/2013

Page 27: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagators

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

27

Strengthen store by constraint propagation prune values in conflict with implemented constraint

x{1,2} y{1,2} z{1,2,3,4}

distinct(x, y, z) x + y = 3

11/8/2013

Page 28: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagators

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

28

Iterate propagator execution until fixpoint no more pruning possible

x{1,2} y{1,2} z{3,4}

distinct(x, y, z) x + y = 3

11/8/2013

Page 29: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagation for SMM

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

29

Results in store S{9} E{4,…,7} N{5,…,8} D{2,…,8}

M{1} O{0} R{2,…,8} Y{2,…,8}

Propagation alone not sufficient! decompose into simpler sub-problems branching and exploration for search

11/8/2013

Page 30: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

branching exploration

Search 30

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 31: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Branching

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

31

Create subproblems with additional constraints enables further propagation defines search tree

x{1,2} y{1,2} z{3,4}

distinct(x, y, z) x + y = 3

x{1} y{2} z{3,4}

distinct(x, y, z) x + y = 3

x{2} y{1} z{3,4}

distinct(x, y, z) x + y = 3

x=1 x≠1

11/8/2013

Page 32: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Heuristic Branching

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

32

Example branching pick variable x (at least two values) pick value n (from domain of x) branch with x = n and x ≠ n

Heuristic needed which variable to select? which value to select?

11/8/2013

Page 33: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

33

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 34: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

34

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 35: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

35

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 36: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

36

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 37: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

37

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 38: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

38

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 39: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

39

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 40: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

40

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 41: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

41

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 42: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

42

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS,

11/8/2013

Page 43: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Search: Heuristic Exploration

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

43

Heuristic branching defines tree shape

Exploration of search tree orthogonal aspect: DFS, BFS, IDFS, LDS, parallel, ...

11/8/2013

Page 44: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Summary

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

44

Modeling variables with domain constraints to state relations branching strategy in real: an array of modeling techniques…

Solving

constraint propagation branching search tree exploration in real: an array of solving techniques…

11/8/2013

Page 45: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

The Constraint Programmer’s Toolbox

45

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 46: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Widely Applicable

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

46

Timetabling Scheduling Personnel and crew rostering Resource allocation Workflow planning and optimization Gate allocation at airports Sports-event scheduling Railroad: track allocation, train allocation, schedules Automatic composition of music Genome sequencing Frequency allocation …

11/8/2013

Page 47: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Current Interest: Constraint-based Code Generation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

47

From input program (in intermediate representation) hardware architecture description

generate constraint problem

Solution = executable program code simplicity: avoid bugs, … flexibility: architecture change, … quality: possibly optimal, …

Ongoing project 2010 – 2015

funded by Ericsson and Vetenskapsrådet

11/8/2013

Page 48: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Problems Are Hard

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

48

The problems are NP hard no efficient algorithm is likely to exist

Tremendously difficult to

always solve any problem instance scale to large instances have single silver bullet method

Property of problems… …not of method …hence no silver bullet

11/8/2013

Page 49: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Why Is a Toolbox Needed?

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

49

Initial model: model to capture problem correctness

Improved model: model to solve problem robustness and scalability often difficult

Tools in the toolbox are needed for… …modeling to solve problems

11/8/2013

Page 50: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Parts of the Toolbox

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

50

“Global” constraints capture structure during modeling provide strong constraint propagation

Search heuristics application specific

Symmetries and dominance relations

reduce size of search space Propagation-boosting constraints Randomized restarts during search

including no-goods from restarts …

11/8/2013

Page 51: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

The Best We Can Hope for…

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

51

problem size

runt

ime

Exponential growth in runtime Without using tools

feasible

11/8/2013

Page 52: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

The Best We Can Hope for…

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

52

problem size

runt

ime

Exponential growth in runtime With propagation and heuristic search

feasible

11/8/2013

Page 53: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

The Best We Can Hope for…

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

53

problem size

runt

ime

Exponential growth in runtime With propagation, heuristic search, symmetry

breaking, restarts, …

feasible

11/8/2013

Page 54: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

distinct reconsidered

Capturing Structure 54

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 55: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Naïve Is Not Good Enough

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

55

distinct(x, y, z) naïve decomposition: x ≠ y and x ≠ z and y ≠ z

propagates only as soon as x, y, or z assigned

x{1,2,3}, y{1,2}, z{1,2} should propagate x{3}

x{1,2}, y{1,2}, z{1,2} should exhibit failure without search

11/8/2013

Page 56: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Strong Propagation Idea

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

56

distinct(x0, …, x4) x0{0,1,2} x1{1,2} x2{1,2} x3{2,4,5} x4{5,6}

Collect all solutions (permutations) x0=0 x1=1 x2=2 x3=4 x4=5 x0=0 x1=1 x2=2 x3=4 x4=6 x0=0 x1=1 x2=2 x3=5 x4=6 x0=0 x1=2 x2=1 x3=4 x4=5 x0=0 x1=2 x2=1 x3=4 x4=6 x0=0 x1=2 x2=1 x3=5 x4=6

Collect values from solutions x0{0} x1{1,2} x2{1,2} x3{4,5} x4{5,6}

11/8/2013

Page 57: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Strong Propagation Idea

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

57

distinct(x0, …, x4) x0{0,1,2} x1{1,2} x2{1,2} x3{2,4,5} x4{5,6}

Collect all solutions (permutations) x0=0 x1=1 x2=2 x3=4 x4=5 x0=0 x1=1 x2=2 x3=4 x4=6 x0=0 x1=1 x2=2 x3=5 x4=6 x0=0 x1=2 x2=1 x3=4 x4=5 x0=0 x1=2 x2=1 x3=4 x4=6 x0=0 x1=2 x2=1 x3=5 x4=6

Collect values from solutions x0{0} x1{1,2} x2{1,2} x3{4,5} x4{5,6}

infeasible: all permutations!

11/8/2013

Page 58: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Strong Propagation Idea

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

58

distinct(x0, …, x4) x0{0,1,2} x1{1,2} x2{1,2} x3{2,4,5} x4{5,6}

Characterize all solutions x0=0 x1=1 x2=2 x3=4 x4=5 x0=0 x1=1 x2=2 x3=4 x4=6 x0=0 x1=1 x2=2 x3=5 x4=6 x0=0 x1=2 x2=1 x3=4 x4=5 x0=0 x1=2 x2=1 x3=4 x4=6 x0=0 x1=2 x2=1 x3=5 x4=6

Collect values from solutions x0{0} x1{1,2} x2{1,2} x3{4,5} x4{5,6}

translate into simple graph

problem!

[Régin. A Filtering Algorithm for Constraints of Difference in CSPs. AAAI 1994]

11/8/2013

Page 59: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Variable Value Graph

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

59

Translates propagation into graph problem variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0,1,2}

x1

x2

x3

x4

0

1

2

4

5

6

11/8/2013

Page 60: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Variable Value Graph

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

60

Translates propagation into graph problem variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0,1,2}

x1{1,2}

x2{1,2}

x3{2,4,5}

x4{5,6}

0

1

2

4

5

6

11/8/2013

Page 61: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Graph Solution (1)

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

61

Solutions maximal matchings in variable value graph variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0}

x1{1}

x2{2}

x3{4}

x4{5}

0

1

2

4

5

6

11/8/2013

Page 62: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Graph Solution (1)

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

62

Solutions maximal matchings in variable value graph variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0}

x1{1}

x2{2}

x3{4}

x4{5}

0

1

2

4

5

6

let’s go for intuition, not

technicalities!

11/8/2013

Page 63: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Graph Solution (2)

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

63

Solutions maximal matchings in variable value graph variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0}

x1{1}

x2{2}

x3{4}

x4{6}

0

1

2

4

5

6

11/8/2013

Page 64: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Graph Solution (3)

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

64

Solutions maximal matchings in variable value graph variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0}

x1{1}

x2{2}

x3{5}

x4{6}

0

1

2

4

5

6

11/8/2013

Page 65: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Graph Solution (4)

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

65

Solutions maximal matchings in variable value graph variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0}

x1{2}

x2{1}

x3{4}

x4{5}

0

1

2

4

5

6

11/8/2013

Page 66: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Graph Solution (5)

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

66

Solutions maximal matchings in variable value graph variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0}

x1{2}

x2{1}

x3{4}

x4{6}

0

1

2

4

5

6

11/8/2013

Page 67: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Graph Solution (6)

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

67

Solutions maximal matchings in variable value graph variable nodes → value nodes

x0

x1

x2

x3

x4

x0{0}

x1{2}

x2{1}

x3{5}

x4{6}

0

1

2

4

5

6

11/8/2013

Page 68: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Characterizing All Solutions

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

68

x1

x2

x1{1,2}

x2{1,2}

1

2

11/8/2013

Page 69: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Characterizing All Solutions

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

69

Non-matched edges in alternating cycle with matched edges...

...appear in some matching ...part of some solution

x1

x2

x1{1,2}

x2{1,2}

1

2

11/8/2013

Page 70: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Characterizing All Solutions

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

70

Non-matched edges in alternating cycle with matched edges...

...appear in some matching ...part of some solution

x1

x2

x1{1,2}

x2{1,2}

1

2

just swap matched with

free!

11/8/2013

Page 71: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Characterizing All Solutions

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

71

x3

x4

x3{2,4,5}

x4{5,6}

4

5

6

11/8/2013

Page 72: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Characterizing All Solutions

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

72

Non-matched edges in alternating path from unmatched node ...

...appears in some matching ...part of some solution

x3

x4

x3{2,4,5}

x4{5,6}

4

5

6

11/8/2013

Page 73: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Characterizing All Solutions

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

73

Non-matched edges in alternating path from unmatched node ...

...appears in some matching ...part of some solution

x3

x4

x3{2,4,5}

x4{5,6}

4

5

6

just swap matched with

free!

11/8/2013

Page 74: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Variable Value Graph

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

74

Start from any matching (just one) Mark edges that can be part of a matching

x0

x1

x2

x3

x4

x0{0,1,2}

x1{1,2}

x2{1,2}

x3{2,4,5}

x4{5,6}

0

1

2

4

5

6

11/8/2013

Page 75: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Variable Value Graph

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

75

Start from any matching (just one) Mark edges that can be part of a matching

x0

x1

x2

x3

x4

x0{0,1,2}

x1{1,2}

x2{1,2}

x3{2,4,5}

x4{5,6}

0

1

2

4

5

6

simple graph algorithm O(n2.5)

[e.g. Ford Fulkerson]

11/8/2013

Page 76: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Variable Value Graph

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

76

Start from any matching (just one) Mark edges that can be part of a matching

x0

x1

x2

x3

x4

x0{0,1,2}

x1{1,2}

x2{1,2}

x3{2,4,5}

x4{5,6}

0

1

2

4

5

6

even simpler graph algorithm

O(n) [e.g. Tarjan’s SCC]

11/8/2013

Page 77: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagation, Finally!

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

77

Prune unmarked edges... …and their corresponding values

x0

x1

x2

x3

x4

x0{0}

x1{1,2}

x2{1,2}

x3{4,5}

x4{5,6}

0

1

2

4

5

6

11/8/2013

Page 78: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Summary

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

78

Constraints capture problem structure (”global”) ease modeling (commonly recurring structures) enable solving (efficient and strong algorithms available)

Constraints as reusable powerful

software components in the toolbox

11/8/2013

Page 79: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

SMM: Strong Propagation

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

79

SEND

+ MORE

= MONEY

9567

+ 1085

= 10652

11/8/2013

Page 80: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

bin packing

Branching Heuristics 80

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 81: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Branching Heuristics

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

81

CP advantage: programmable heuristics application domain dependent: scheduling, assignment, bin-

packing, … requires deep insight into problem structure limited reuse even though recurring principles

CP disadvantage: universal heuristics just emerging

CP solver as “black box” tool ultimate goal: robust and autonomous search contrast to SAT and MIP

Here: bin packing as case study for programmable

heuristics

11/8/2013

Page 82: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

First-Fail Principle

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

82

Could be paraphrased as: to succeed, try first where you are most

likely to fail! minimize cost to find out that decision is in fact wrong cost = amount of search needed (depth-first search)

Avoid thrashing

make wrong decision: search will have to find out make many unrelated or non-difficult decisions takes ages to find that decision was wrong!

[Haralick, Elliott. Increasing tree search efficiency for constraint satisfaction

problems. Artificial Intelligence, 1980]

11/8/2013

Page 83: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Bin Packing Problem

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

83

Given bins of capacity c

n items of size si

Sought find least number of bins such that each item packed into bin

6 6 6 5 3 3

2 2 2 2 2

c=10

11/8/2013

Page 84: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Bin Packing Problem

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

84

Given bins of capacity c

n items of size si

Sought find least number of bins such that each item packed into bin

6 6 6 5

3 3 2

2

2

2 2

c=10

11/8/2013

Page 85: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Simplify Problem

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

85

Repeat simpler problem for m such that: is it possible to pack n items into m bins?

Restrict m by lower bound l = (s1 + … + sn) / c and upper bound u = #bins from some (non-optimal) packing Try m between l and u: least feasible m optimal

11/8/2013

Page 86: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Model: Variables

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

86

Bin variable bi for each item i bi {1, …, n} into which bin is item i packed

Load variable lj for each bin j lj {0, …, c}

size of items packed into bin j

Packing variable xij xij {0,1}

whether item i is packed into bin j

11/8/2013

Page 87: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Model: Constraints

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

87

Total load is size of all items l1 + … + lm = s1 + … + sn

Load corresponds to items packed into bin j lj = s1x1j + … + snxnj

Bin variables correspond to packing variables xij = 1 if and only if bi=j

11/8/2013

Page 88: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Constraint Model: Improved

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

88

Use dedicated bin packing constraint binpacking(b1,…,bn, s1,…,sn, l1,…,lm)

no packing variables needed much stronger propagation

If items i and j with i<j have same size bi ≤ bj

reduce search space (“symmetry breaking”)

Assign large items (si > c/2) to fixed bins ... [Shaw. A Constraint for Bin Packing. CP 2004]

11/8/2013

Page 89: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

How To Branch?

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

89

Branch over the bin variables bi

that is: assign items to bins

Which item to pick first: largest!

Which bin to pick first: tightest! best fit (least slack)! “Easy” to express with standard heuristics… …can programming do more?

11/8/2013

Page 90: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Programming Heuristic

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

90

Avoid search perfect fit of item i to bin b: assign i to b (no search) all bins have same slack: assign i to some b

Learn from failure

try to assign item i to bin b

if search fails: no other item j with si=sj can go to b

if search fails: item i cannot go to bin with same slack (also for items j with si=sj) “symmetry breaking during search” known as CDBF: complete decreasing best-fit

[Gent, Walsh. From approximate to optimal solutions: constructing pruning and propagation rules.

IJCAI 1997.]

11/8/2013

Page 91: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

beauty and curse of constraint programming

Local Reasoning 91

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 92: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

92

11 4

5

14 10

17

3

6 4

3

10

3

11/8/2013

Page 93: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

93

Fields take digits Hints describe

for row or column digit sum must be hint digits must be distinct

11 4

5

14 10

17

3

6 4

3

10

3

11/8/2013

Page 94: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

94

For hint 3 1 + 2

11 4

5

14 10

17

3

6 4

3

10

3

1

2

11/8/2013

Page 95: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

95

For hint 3 1 + 2 or 2 + 1

11 4

5

14 10

17

3

6 4

3

10

3

2

1

11/8/2013

Page 96: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

96

For hint 4 1 + 3

11 4

5

14 10

17

3

6 4

3

10

3

1 3

11/8/2013

Page 97: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

97

For hint 4 1 + 3 or 3 + 1

11 4

5

14 10

17

3

6 4

3

10

3

3 1

11/8/2013

Page 98: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

98

For hint 3 1 + 2 For hint 4 1 + 3

11 4

5

14 10

17

3

6 4

3

10

3

3 1

2

11/8/2013

Page 99: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

2

Kakuro Solution

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

99

11 4

5

14 10

17

3

6 4

3

10

3

3

9 5 1 2

5 1 3 1

3 1 4 2

2 1

11/8/2013

Page 100: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Modeling and Solving Kakuro

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

100

Obvious model: for each hint distinct constraint sum constraint

Good case... (?) few variables per hint few values per variable

Let’s try it... 22×14, 114 hints: 9638 search nodes, 2min 40sec 90×124, 4558 hints: ? search nodes, ? minutes years? centuries? eons?

11/8/2013

Page 101: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Local Reasoning: Decomposition

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

101

Possible values = all digits

Propagating sum = 4 in isolation!

Propagating distinct in isolation!

Propagating both in combination! but how? where is the tool (constraint) for it?

4 1..9 1..9

4 1..3 1..3

all solutions: 1,3 2,2 3,1

4 1..3 1..3

all solutions: 1,2 1,3 2,1

2,3 3,1 3,2

4 1,3 1,3

all solutions: 1,3 3,1

11/8/2013

Page 102: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Failing for Kakuro...

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

102

Beauty of constraint programming local reasoning propagators are independent variables as simple communication channels

Curse of constraint programming local reasoing propagators are independent variables as simple communication channels

11/8/2013

Page 103: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

personnel rostering Kakuro reconsidered

User-defined Constraints 103

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 104: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Modeling Rostering: User-defined

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

104

Personnel rostering: example (nonsensical) one day off (o) after weekend shift (w) one day off (o) after two consectuive long shifts (l) normal shifts (n)

Infeasible to implement propagator for ever-changing rostering constraints

User-defined constraints: describe legal rosters by regular expression

(wo | llo | n)*

11/8/2013

Page 105: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Regular Constraint

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

105

Propagation idea: maintain all accepting paths in DFA from start state (0) to a final state (0): solutions! symbols on transitions comply with variable values [Pesant. A Regular Language Membership Constraint for Finite Sequences of Variables.

CP 2004]

0

1

2

n

l

l

w

o

(wo | llo | n)*

regular(x1, …, xn, r) x1 … xn word in r or, accepted by DFA d for r

11/8/2013

Page 106: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagating Regular

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

106

Example: regular(x, y, z, d) x, y, z in {w,o,l,n} in reality: w=0, o=1, l=2, n=3

0

x y z

11/8/2013

Page 107: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagating Regular

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

107

Forward pass all paths from start state

0

x

0

y z

1

2

n

l

w

11/8/2013

Page 108: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagating Regular

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

108

Forward pass: optimization each state at most once for each variable (“layer”) several incoming/outgoing edges per state

0

x

0

y z

0

1 1

2 2

n

l

o

n

l

l

w w

11/8/2013

Page 109: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagating Regular

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

109

Forward pass finished

0

x

0

y z

0 0

1 1 1

2 2 2

n

l

o

n n

l

l

l

l

w w w

o

11/8/2013

Page 110: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagating Regular

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

110

Backward pass start: remove non-final states for last layer

0

x

0

y z

0 0

1 1

2 2

n

l

o

n n

l

l

w w

o

11/8/2013

Page 111: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagating Regular

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

111

Backward pass start: remove non-final states for last layer continue: remove states with no outgoing edges

0

x

0

y z

0 0

1

2 2

n

l

o

n n

l

w w

o

11/8/2013

Page 112: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Propagating Regular

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

112

Pruning x{n,l,w} y{n,l,w,o} z{n,o}

0

x

0

y z

0 0

1

2 2

n

l

o

n n

l

w w

o

11/8/2013

Page 113: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Getting Even Better

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

113

Variants of regular constraint original regular constraint [Pesant, 2004] use way more efficient MDD instead of DFA [Yap ea,

2008] cost-based variants available [Pesant, ea, 2007]

11/8/2013

Page 114: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Kakuro Reconsidered

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

114

Real model: for each hint one regular constraint combining distinct and sum example: regular expression for hint 5 with two fields 14 | 23 | 32 | 41 precompute when model is setup

Good case... few solutions for combined constraint

Let’s try again (precomputation time included) 22×14, 114 hints: 0 search nodes, 28 msec 90×124, 4558 hints: 0 search nodes, 345 msec

11/8/2013

Page 115: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Summary

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

115

User-defined constraints high degree of flexibility efficient and perfect propagation limited to medium-sized constraints

Kakuro: decomposition is harmful [again]

capture essential structure by few constraints best by single constraint

11/8/2013

Page 116: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Summary 116

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS 11/8/2013

Page 117: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Essence

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

117

Constraint programming is about… ...local reasoning exploiting structure ...an array of modeling tools for solving

Strength

simplicity, compositionality, exploiting structure rich toolbox of techniques

Challenges

lack of global picture during search difficult to find global picture due to rich structure

11/8/2013

Page 118: chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90 . Avoid search . perfect fit of item . i. to bin . b: assign . i. to . b (no search)

Resources

The CP'ers Toolbox, Schulte, SCALE, KTH & SICS

118

Overview Rossi, Van Beek, Walsh, eds. Handbook of Constraint

Programming, Elsevier, 2006 (around 950 pages). National perspective

Flener, Carlsson, Schulte. Constraint Programming in Sweden, IEEE Intelligent Systems, pages 87-89. IEEE Press, March/April, 2009.

SweConsNet: Swedish network for people interested in constraints. Yearly workshops, see:

www.it.uu.se/research/SweConsNet/ Advanced (ID2204)/graduate (ID3005) course

taught by me period 4, 2014

11/8/2013