chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90...
Transcript of chschulte.github.io · Programming Heuristic . The CP'ers Toolbox, Schulte, SCALE, KTH & SICS . 90...
![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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/1.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/2.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/3.jpg)
...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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/4.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/5.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/6.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/7.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/8.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/9.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/10.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/11.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/12.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/13.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/14.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/15.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/16.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/17.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/18.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/19.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/20.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/21.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/22.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/23.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/24.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/25.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/26.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/27.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/28.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/29.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/30.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/31.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/32.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/33.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/34.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/35.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/36.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/37.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/38.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/39.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/40.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/41.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/42.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/43.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/44.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/45.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/46.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/47.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/48.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/49.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/50.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/51.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/52.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/53.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/54.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/55.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/56.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/57.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/58.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/59.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/60.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/61.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/62.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/63.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/64.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/65.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/66.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/67.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/68.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/69.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/70.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/71.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/72.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/73.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/74.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/75.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/76.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/77.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/78.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/79.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/80.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/81.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/82.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/83.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/84.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/85.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/86.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/87.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/88.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/89.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/90.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/91.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/92.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/93.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/94.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/95.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/96.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/97.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/98.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/99.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/100.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/101.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/102.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/103.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/104.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/105.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/106.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/107.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/108.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/109.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/110.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/111.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/112.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/113.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/114.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/115.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/116.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/117.jpg)
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)](https://reader033.fdocuments.us/reader033/viewer/2022042208/5eac1561df2b10268f55b374/html5/thumbnails/118.jpg)
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