Constraint Programming Overview based on Examples Marco Chiarandini - - PowerPoint PPT Presentation

constraint programming overview based on examples
SMART_READER_LITE
LIVE PREVIEW

Constraint Programming Overview based on Examples Marco Chiarandini - - PowerPoint PPT Presentation

DM841 Discrete Optimization Part I Lecture 2 Constraint Programming Overview based on Examples Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark Outline 1. An Initial Example 2. Constraint


slide-1
SLIDE 1

DM841 Discrete Optimization Part I Lecture 2

Constraint Programming Overview based on Examples

Marco Chiarandini

Department of Mathematics & Computer Science University of Southern Denmark

slide-2
SLIDE 2

Outline

  • 1. An Initial Example
  • 2. Constraint
  • 3. Send More Money

Points to Remember Modeling in MILP

2

slide-3
SLIDE 3

Put a different number in each circle (1 to 8) such that adjacent circles cannot take consecutive numbers

slide-4
SLIDE 4

Constraint Programming An Introduction by example Patrick Prosser with the help of Toby Walsh, Chris Beck, Barbara Smith, Peter van Beek, Edward Tsang, ...

slide-5
SLIDE 5

A Puzzle

  • Place numbers 1 through 8 on nodes

– Each number appears exactly once

? ? ? ? ? ? ? ?

– No connected nodes have consecutive numbers

You have 8 minutes!

slide-6
SLIDE 6

Heuristic Search

Which nodes are hardest to number? ? ? ? ? ? ? ? ?

slide-7
SLIDE 7

Heuristic Search

? ? ? ? ? ? ? ?

slide-8
SLIDE 8

Heuristic Search

? ? ? ? ? ? ? ? Which are the least constraining values to use?

slide-9
SLIDE 9

Heuristic Search

? 1 ? ? 8 ? ? ? Values 1 and 8

slide-10
SLIDE 10

Heuristic Search

? 1 ? ? 8 ? ? ? Values 1 and 8

Symmetry means we don’t need to consider: 8 1

slide-11
SLIDE 11

Inference/propagation

? 1 ? ? 8 ? ? ? We can now eliminate many values for other nodes

slide-12
SLIDE 12

Inference/propagation

? 1 ? ? 8 ? ? ?

{1,2,3,4,5,6,7,8}

slide-13
SLIDE 13

Inference/propagation

? 1 ? ? 8 ? ? ?

{2,3,4,5,6,7}

slide-14
SLIDE 14

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6}

slide-15
SLIDE 15

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6} By symmetry {3,4,5,6}

slide-16
SLIDE 16

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6} {3,4,5,6} {1,2,3,4,5,6,7,8}

slide-17
SLIDE 17

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6} {3,4,5,6} {2,3,4,5,6,7}

slide-18
SLIDE 18

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6} {3,4,5,6} {3,4,5,6}

slide-19
SLIDE 19

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6} By symmetry {3,4,5,6} {3,4,5,6} {3,4,5,6}

slide-20
SLIDE 20

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6} {3,4,5,6,7} {3,4,5,6} {3,4,5,6} {3,4,5,6} {2,3,4,5,6}

slide-21
SLIDE 21

Inference/propagation

? 1 ? ? 8 ? ? ?

{3,4,5,6} {3,4,5,6,7} {3,4,5,6} {3,4,5,6} {3,4,5,6} {2,3,4,5,6} Value 2 and 7 are left in just one variable domain each

slide-22
SLIDE 22

Inference/propagation

? 1 ? ? 8 ? 2 7

{3,4,5,6} {3,4,5,6,7} {3,4,5,6} {3,4,5,6} {3,4,5,6} {2,3,4,5,6} And propagate …

slide-23
SLIDE 23

Inference/propagation

? 1 ? ? 8 ? 2 7

{3,4,5} {3,4,5,6,7} {3,4,5} {3,4,5,6} {3,4,5,6} {2,3,4,5,6} And propagate …

slide-24
SLIDE 24

Inference/propagation

? 1 ? ? 8 ? 2 7

{3,4,5} {3,4,5,6,7} {3,4,5} {4,5,6} {4,5,6} {2,3,4,5,6} And propagate …

slide-25
SLIDE 25

Inference/propagation

? 1 ? ? 8 ? 2 7

{3,4,5} {3,4,5} {4,5,6} {4,5,6} Guess a value, but be prepared to backtrack …

slide-26
SLIDE 26

Inference/propagation

3 1 ? ? 8 ? 2 7

{3,4,5} {3,4,5} {4,5,6} {4,5,6} Guess a value, but be prepared to backtrack …

slide-27
SLIDE 27

Inference/propagation

3 1 ? ? 8 ? 2 7

{3,4,5} {3,4,5} {4,5,6} {4,5,6} And propagate …

slide-28
SLIDE 28

Inference/propagation

3 1 ? ? 8 ? 2 7

{4,5} {5,6} {4,5,6} And propagate …

slide-29
SLIDE 29

Inference/propagation

3 1 ? ? 8 ? 2 7

{4,5} {5,6} {4,5,6} Guess another value …

slide-30
SLIDE 30

Inference/propagation

3 1 ? 5 8 ? 2 7

{4,5} {4,5,6} Guess another value …

slide-31
SLIDE 31

Inference/propagation

3 1 ? 5 8 ? 2 7

{4,5} {4,5,6} And propagate …

slide-32
SLIDE 32

Inference/propagation

3 1 ? 5 8 ? 2 7

{4} {4,6} And propagate …

slide-33
SLIDE 33

Inference/propagation

3 1 4 5 8 ? 2 7

{4} {4,6} One node has only a single value left …

slide-34
SLIDE 34

Inference/propagation

3 1 4 5 8 6 2 7

{6}

slide-35
SLIDE 35

Solution

3 1 4 5 8 6 2 7

slide-36
SLIDE 36

The Core of Constraint Computation

  • Modelling

– Deciding on variables/domains/constraints

  • Heuristic Search
  • Inference/Propagation
  • Symmetry
  • Backtracking
slide-37
SLIDE 37

Hardness

  • The puzzle is actually a hard problem

– NP-complete

slide-38
SLIDE 38

Constraint programming

  • Model problem by specifying constraints on

acceptable solutions

– define variables and domains – post constraints on these variables

  • Solve model

– choose algorithm

  • incremental assignment / backtracking search
  • complete assignments / stochastic search

– design heuristics

slide-39
SLIDE 39

Example CSP

  • Variable, vi for each node
  • Domain of {1, …, 8}
  • Constraints

– All values used allDifferent(v1 v2 v3 v4 v5 v6 v7 v8) – No consecutive numbers for adjoining nodes |v1 - v2 | > 1 |v1 - v3 | > 1 …

? ? ? ? ? ? ? ?

slide-40
SLIDE 40

Outline

  • 1. An Initial Example
  • 2. Constraint
  • 3. Send More Money

Points to Remember Modeling in MILP

3

slide-41
SLIDE 41

Constraint Programming - in a nutshell

◮ Declarative description of problems with

◮ Variables which range over (finite) sets of values ◮ Constraints over subsets of variables which restrict possible value

combinations

◮ A solution is a value assignment which satisfies all constraints

◮ Constraint propagation/reasoning

◮ Removing inconsistent values for variables ◮ Detect failure if constraint can not be satisfied ◮ Interaction of constraints via shared variables ◮ Incomplete

◮ Search

◮ User controlled assignment of values to variables ◮ Each step triggers constraint propagation

◮ Different domains require/allow different methods

4

slide-42
SLIDE 42

Constraint Programming

Constraint Programming: an alternative approach to imperative programming and object oriented programming.

◮ Variables each with a finite set of possible values (domain) ◮ Constraint on a sequence of variables: a relationship on their domains

Constraint Satisfaction Problem: finite set of constraints

5

slide-43
SLIDE 43

CP

Constraint Programming = model (representation) + propagation (reasoning, inference) + search (reasoning, inference)

6

slide-44
SLIDE 44

Basic Process

Problem Human Model Constraint Solver/Search Solution

Insight Centre for Data Analytics Slide 9 June 20th, 2016

slide-45
SLIDE 45

More Realistic

Problem Human Model Constraint Solver/Search Hangs Solution Wrong Solution

Insight Centre for Data Analytics Slide 10 June 20th, 2016

slide-46
SLIDE 46

Dual Role of Model

  • Allows Human to Express Problem
  • Close to Problem Domain
  • Constraints as Abstractions
  • Allows Solver to Execute
  • Variables as Communication Mechanism
  • Constraints as Algorithms

Insight Centre for Data Analytics Slide 11 June 20th, 2016

slide-47
SLIDE 47

Modelling Frameworks

  • MiniZinc (NICTA, Australia)
  • NumberJack (Insight, Ireland)
  • Essence (UK)
  • Allow use of multiple back-end solvers
  • Compile model into variants for each solver
  • A priori solver independent model(CP, MIP, SAT)

Insight Centre for Data Analytics Slide 12 June 20th, 2016

slide-48
SLIDE 48

Framework Process

Problem Human Model Compile/Reformulate CP MIP SAT Other Solution Solution Solution Solution

Insight Centre for Data Analytics Slide 13 June 20th, 2016

slide-49
SLIDE 49

Computational Models

Three main Computational Models to solve (combinatorial) constrained

  • ptimization problems:

◮ Mathematical Programming (LP, ILP, QP, SDP, ...) ◮ Constraint Programming (CSP as a model, SAT as a very special case) ◮ Local Search (... and Meta-heuristics) ◮ Others? Dynamic programming, dedicated algorithms, satisfiability

modulo theory, answer set programming, etc.

7

slide-50
SLIDE 50

Modeling

Modeling:

  • 1. identify:

◮ parameters ◮ variables ◮ domains ◮ constraints ◮ objective function

that formulate the problem

  • 2. express what in point 1) in a way that allows the solution by available

software

8

slide-51
SLIDE 51

Variables

In MILP: real and integer (mostly binary) variables In CP:

◮ finite domain integer (including Booleans), ◮ continuos with interval constraints ◮ structured domains: finite sets, multisets, graphs, ...

In LS: integer variables

9

slide-52
SLIDE 52

Constraint Programming vs MILP

◮ In MILP we formulate problems as a set of linear inequalities ◮ In CP we describe substructures (so-called global constraints) and

combine them with various combinators.

◮ Substructures capture building blocks often (but not always)

comptuationally tractable by special-purpose algorithms

◮ CP models can:

◮ be solved by the constraint engine ◮ be linearized and solved by their MIP solvers; ◮ be translated in CNF and solved by SAT solvers; ◮ be handled by local search

◮ In MILP the solver is often seen as a black-box

In CP and LS solvers leave the user the task of programming the search.

◮ CP = model + propagation + search

constraint propagation by domain filtering inference search = backtracking or branch and bound or local search

10

slide-53
SLIDE 53

Outline

  • 1. An Initial Example
  • 2. Constraint
  • 3. Send More Money

Points to Remember Modeling in MILP

11

slide-54
SLIDE 54

Aims

◮ Example of Finite Domain Constraint Problem ◮ Models and Programs ◮ Constraint Propagation and Search ◮ Some Basic Constraints:

linear arithmetic, alldifferent, disequality

◮ A Built-in search ◮ Visualizers for variables, constraints and search

12

slide-55
SLIDE 55

Problem: Send + More = Money

Send + More = Money You are asked to replace each letter by a different digit so that S E N D + M O R E = M O N E Y is correct. Because S and M are the leading digits, they cannot be equal to the 0 digit.

13

slide-56
SLIDE 56

Modelling

  • 1. Parameters
  • 2. Variables (ie, solution representation)
  • 3. Domains (ie, allowed values for the variables)
  • 4. Constraints

Later Objective Function

14

slide-57
SLIDE 57

Model

◮ Each character is a variable, which ranges over the values 0 to 9. ◮ An alldifferent constraint between all variables, which states that two

different variables must have different values. This is a very common constraint, which we will encounter in many other problems later on.

◮ Two disequality constraints (variable X must be different from value V )

stating that the variables at the beginning of a number can not take the value 0.

◮ An arithmetic equality constraint linking all variables with the proper

coefficients and stating that the equation must hold.

15

slide-58
SLIDE 58

Send More Money: CP model

SEND + MORE = MONEY

◮ Xi ∈ {0, . . . , 9} for all i ∈ I = {S, E, N, D, M, O, R, Y } ◮ Each letter takes a different digit 1 inequality constraint

alldifferent([X1, X2, . . . , X8]).

(it substitutes 28 inequality constraints: Xi = Xj, i, j ∈ I, i = j)

◮ XM = 0, XS = 0 ◮ Crypto constraint 1 equality constraint:

103X1 +102X2 +10X3 +X4 + 103X5 +102X6 +10X7 +X2 = 104X5 +103X6 +102X3 +10X2 +X8

16

slide-59
SLIDE 59

◮ This is one model, not the model of the problem ◮ Many possible alternatives ◮ Choice often depends on the constraint system available

Constraints available Reasoning attached to constraints

◮ Not always clear which is the best model

17

slide-60
SLIDE 60

Send More Money: CP model

Gecode-python

from gecode import * s = space() letters = s.intvars(8,0,9) S,E,N,D,M,O,R,Y = letters s.rel(M,IRT_NQ,0) s.rel(S,IRT_NQ,0) s.distinct(letters) C = [1000, 100, 10, 1, 1000, 100, 10, 1,

  • 10000, -1000, -100, -10, -1]

X = [S,E,N,D, M,O,R,E, M,O,N,E,Y] s.linear(C,X, IRT_EQ, 0) s.branch(letters, INT_VAR_SIZE_MIN, INT_VAL_MIN) for s2 in s.search(): print(s2.val(letters))

18

slide-61
SLIDE 61

Send More Money: CP model

MiniZinc

19

slide-62
SLIDE 62

Program Sendmory

:- module(sendmory). :- export(sendmory/1). :- lib(ic). sendmory(L):- L = [S,E,N,D,M,O,R,Y], L :: 0..9, alldifferent(L), S #\= 0, M #\= 0, 1000*S + 100*E + 10*N + D + 1000*M + 100*O + 10*R + E #= 10000*M + 1000*O + 100*N + 10*E + Y, labeling(L).

Insight Centre for Data Analytics Slide 21 June 20th, 2016

slide-63
SLIDE 63

Question

But how did the program come up with this solution?

20

slide-64
SLIDE 64

Constraint Setup

◮ Domain Definition ◮ Alldifferent Constraint ◮ Disequality Constraints ◮ Equality Constraint

21

slide-65
SLIDE 65

The following slides are taken from H. Simonis: H. Simonis’ demo, slides 33-134 and his tutorial at ACP2016.

22

slide-66
SLIDE 66

Domain Definition

L = [S,E,N,D,M,O,R,Y], L :: 0..9, [S, E, N, D, M, O, R, Y] ∈ {0..9}

Insight Centre for Data Analytics Slide 31 June 20th, 2016

slide-67
SLIDE 67

Domain Visualization

1 2 3 4 5 6 7 8 9 S E N D M O R Y

Insight Centre for Data Analytics Slide 32 June 20th, 2016

slide-68
SLIDE 68

Domain Visualization

Rows = Variables 1 2 3 4 5 6 7 8 9 S E N D M O R Y

Insight Centre for Data Analytics Slide 32 June 20th, 2016

slide-69
SLIDE 69

Domain Visualization

Columns = Values 1 2 3 4 5 6 7 8 9 S E N D M O R Y

Insight Centre for Data Analytics Slide 32 June 20th, 2016

slide-70
SLIDE 70

Domain Visualization

Cells= State 1 2 3 4 5 6 7 8 9 S E N D M O R Y

Insight Centre for Data Analytics Slide 32 June 20th, 2016

slide-71
SLIDE 71

Alldifferent Constraint

alldifferent(L),

  • Built-in of ic library
  • No initial propagation possible
  • Suspends, waits until variables are changed
  • When variable is fixed, remove value from domain of
  • ther variables
  • Forward checking

Insight Centre for Data Analytics Slide 33 June 20th, 2016

slide-72
SLIDE 72

Alldifferent Visualization

Uses the same representation as the domain visualizer 1 2 3 4 5 6 7 8 9 S E N D M O R Y

Insight Centre for Data Analytics Slide 34 June 20th, 2016

slide-73
SLIDE 73

Disequality Constraints

S #\= 0, M#\= 0, Remove value from domain S ∈ {1..9}, M ∈ {1..9} Constraints solved, can be removed

Insight Centre for Data Analytics Slide 35 June 20th, 2016

slide-74
SLIDE 74

Domains after Disequality

1 2 3 4 5 6 7 8 9 S E N D M O R Y

Insight Centre for Data Analytics Slide 36 June 20th, 2016

slide-75
SLIDE 75

Equality Constraint

  • Normalization of linear terms
  • Single occurence of variable
  • Positive coefficients
  • Propagation

Insight Centre for Data Analytics Slide 37 June 20th, 2016

slide-76
SLIDE 76

Normalization

1000*S+ 100*E+ 10*N+ D +1000*M+ 100*O+ 10*R+ E 10000*M+ 1000*O+ 100*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-77
SLIDE 77

Normalization

1000*S+ 100*E+ 10*N+ D +1000*M+ 100*O+ 10*R+ E 10000*M+ 1000*O+ 100*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-78
SLIDE 78

Normalization

1000*S+ 100*E+ 10*N+ D + 100*O+ 10*R+ E 9000*M+ 1000*O+ 100*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-79
SLIDE 79

Normalization

1000*S+ 100*E+ 10*N+ D + 100*O+ 10*R+ E 9000*M+ 1000*O+ 100*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-80
SLIDE 80

Normalization

1000*S+ 100*E+ 10*N+ D + 10*R+ E 9000*M+ 900*O+ 100*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-81
SLIDE 81

Normalization

1000*S+ 100*E+ 10*N+ D + 10*R+ E 9000*M+ 900*O+ 100*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-82
SLIDE 82

Normalization

1000*S+ 100*E+ D + 10*R+ E 9000*M+ 900*O+ 90*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-83
SLIDE 83

Normalization

1000*S+ 100*E+ D + 10*R+ E 9000*M+ 900*O+ 90*N+ 10*E+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-84
SLIDE 84

Normalization

1000*S+ 91*E+ D + 10*R 9000*M+ 900*O+ 90*N+ Y

Insight Centre for Data Analytics Slide 38 June 20th, 2016

slide-85
SLIDE 85

Simplified Equation

1000∗S +91∗E +10∗R +D = 9000∗M +900∗O +90∗N +Y

Insight Centre for Data Analytics Slide 39 June 20th, 2016

slide-86
SLIDE 86

Propagation

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9 = 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

Insight Centre for Data Analytics Slide 40 June 20th, 2016

slide-87
SLIDE 87

Propagation

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9

  • 1000..9918

= 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

  • 9000..89919

Insight Centre for Data Analytics Slide 40 June 20th, 2016

slide-88
SLIDE 88

Propagation

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9

  • 9000..9918

= 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

  • 9000..9918

Insight Centre for Data Analytics Slide 40 June 20th, 2016

slide-89
SLIDE 89

Propagation

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9

  • 9000..9918

= 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

  • 9000..9918

Deduction: M = 1, S = 9, O ∈ {0..1}

Insight Centre for Data Analytics Slide 40 June 20th, 2016

slide-90
SLIDE 90

Propagation

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9

  • 9000..9918

= 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

  • 9000..9918

Deduction: M = 1, S = 9, O ∈ {0..1} Why?

Skip Insight Centre for Data Analytics Slide 40 June 20th, 2016

slide-91
SLIDE 91

Consider lower bound for S

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9

  • 9000..9918

= 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

  • 9000..9918
  • Lower bound of equation is 9000
  • Rest of lhs (left hand side) (91 ∗ E0..9 + 10 ∗ R0..9 + D0..9)

is atmost 918

  • S must be greater or equal to 9000−918

1000

= 8.082

  • otherwise lower bound of equation not reached by lhs
  • S is integer, therefore S ≥ ⌈ 9000−918

1000

⌉ = 9

  • S has upper bound of 9, so S = 9

Insight Centre for Data Analytics Slide 41 June 20th, 2016

slide-92
SLIDE 92

Consider upper bound of M

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9

  • 9000..9918

= 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

  • 9000..9918
  • Upper bound of equation is 9918
  • Rest of rhs (right hand side) 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

is at least 0

  • M must be smaller or equal to 9918−0

9000

= 1.102

  • M must be integer, therefore M ≤ ⌊ 9918−0

9000 ⌋ = 1

  • M has lower bound of 1, so M = 1

Insight Centre for Data Analytics Slide 42 June 20th, 2016

slide-93
SLIDE 93

Consider upper bound of O

1000 ∗ S1..9 + 91 ∗ E0..9 + 10 ∗ R0..9 + D0..9

  • 9000..9918

= 9000 ∗ M1..9 + 900 ∗ O0..9 + 90 ∗ N0..9 + Y 0..9

  • 9000..9918
  • Upper bound of equation is 9918
  • Rest of rhs (right hand side) 9000 ∗ 1 + 90 ∗ N0..9 + Y 0..9 is

at least 9000

  • O must be smaller or equal to 9918−9000

900

= 1.02

  • O must be integer, therefore O ≤ ⌊ 9918−9000

900

⌋ = 1

  • O has lower bound of 0, so O ∈ {0..1}

Insight Centre for Data Analytics Slide 43 June 20th, 2016

slide-94
SLIDE 94

Propagation of equality: Result

1 2 3 4 5 6 7 8 9 S

E N D M ✹

  • O

✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ R Y

Insight Centre for Data Analytics Slide 44 June 20th, 2016

slide-95
SLIDE 95

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S

E N D M ✹

  • O

✖ ✖ ✖ ✖ ✖ ✖ ✖ ✖ R Y

Insight Centre for Data Analytics Slide 45 June 20th, 2016

slide-96
SLIDE 96

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S ✹ E | N | D | M ✹ O R | Y |

Insight Centre for Data Analytics Slide 45 June 20th, 2016

slide-97
SLIDE 97

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E | N | D | M ✹ O | R | Y |

Insight Centre for Data Analytics Slide 45 June 20th, 2016

slide-98
SLIDE 98

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N D M O ✹ R Y

Insight Centre for Data Analytics Slide 45 June 20th, 2016

slide-99
SLIDE 99

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E | N | D | M O ✹ R | Y |

Insight Centre for Data Analytics Slide 45 June 20th, 2016

slide-100
SLIDE 100

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N D M O R Y O = 0, [E, R, D, N, Y] ∈ {2..8}

Insight Centre for Data Analytics Slide 45 June 20th, 2016

slide-101
SLIDE 101

Waking the equality constraint

  • Triggered by assignment of variables
  • or update of lower or upper bound

Insight Centre for Data Analytics Slide 46 June 20th, 2016

slide-102
SLIDE 102

Removal of constants

1000 ∗ 9 + 91 ∗ E2..8 + 10 ∗ R2..8 + D2..8 = 9000 ∗ 1 + 900 ∗ 0 + 90 ∗ N2..8 + Y 2..8

Insight Centre for Data Analytics Slide 47 June 20th, 2016

slide-103
SLIDE 103

Removal of constants

1000 ∗ 9 + 91 ∗ E2..8 + 10 ∗ R2..8 + D2..8 = 9000 ∗ 1 + 900 ∗ 0 + 90 ∗ N2..8 + Y 2..8

Insight Centre for Data Analytics Slide 47 June 20th, 2016

slide-104
SLIDE 104

Removal of constants

91 ∗ E2..8 + 10 ∗ R2..8 + D2..8 = 90 ∗ N2..8 + Y 2..8

Insight Centre for Data Analytics Slide 47 June 20th, 2016

slide-105
SLIDE 105

Propagation of equality (Iteration 1)

91 ∗ E2..8 + 10 ∗ R2..8 + D2..8

  • 204..816

= 90 ∗ N2..8 + Y 2..8

  • 182..728

Insight Centre for Data Analytics Slide 48 June 20th, 2016

slide-106
SLIDE 106

Propagation of equality (Iteration 1)

91 ∗ E2..8 + 10 ∗ R2..8 + D2..8 = 90 ∗ N2..8 + Y 2..8

  • 204..728

Insight Centre for Data Analytics Slide 48 June 20th, 2016

slide-107
SLIDE 107

Propagation of equality (Iteration 1)

91 ∗ E2..8 + 10 ∗ R2..8 + D2..8 = 90 ∗ N2..8 + Y 2..8

  • 204..728

N ≥ 3 = ⌈204 − 8 90 ⌉, E ≤ 7 = ⌊728 − 22 91 ⌋

Insight Centre for Data Analytics Slide 48 June 20th, 2016

slide-108
SLIDE 108

Propagation of equality (Iteration 2)

91 ∗ E2..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N3..8 + Y 2..8

Insight Centre for Data Analytics Slide 49 June 20th, 2016

slide-109
SLIDE 109

Propagation of equality (Iteration 2)

91 ∗ E2..7 + 10 ∗ R2..8 + D2..8

  • 204..725

= 90 ∗ N3..8 + Y 2..8

  • 272..728

Insight Centre for Data Analytics Slide 49 June 20th, 2016

slide-110
SLIDE 110

Propagation of equality (Iteration 2)

91 ∗ E2..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N3..8 + Y 2..8

  • 272..725

Insight Centre for Data Analytics Slide 49 June 20th, 2016

slide-111
SLIDE 111

Propagation of equality (Iteration 2)

91 ∗ E2..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N3..8 + Y 2..8

  • 272..725

E ≥ 3 = ⌈272 − 88 91 ⌉

Insight Centre for Data Analytics Slide 49 June 20th, 2016

slide-112
SLIDE 112

Propagation of equality (Iteration 3)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N3..8 + Y 2..8

Insight Centre for Data Analytics Slide 50 June 20th, 2016

slide-113
SLIDE 113

Propagation of equality (Iteration 3)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8

  • 295..725

= 90 ∗ N3..8 + Y 2..8

  • 272..728

Insight Centre for Data Analytics Slide 50 June 20th, 2016

slide-114
SLIDE 114

Propagation of equality (Iteration 3)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N3..8 + Y 2..8

  • 295..725

Insight Centre for Data Analytics Slide 50 June 20th, 2016

slide-115
SLIDE 115

Propagation of equality (Iteration 3)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N3..8 + Y 2..8

  • 295..725

N ≥ 4 = ⌈295 − 8 90 ⌉

Insight Centre for Data Analytics Slide 50 June 20th, 2016

slide-116
SLIDE 116

Propagation of equality (Iteration 4)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N4..8 + Y 2..8

Insight Centre for Data Analytics Slide 51 June 20th, 2016

slide-117
SLIDE 117

Propagation of equality (Iteration 4)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8

  • 295..725

= 90 ∗ N4..8 + Y 2..8

  • 362..728

Insight Centre for Data Analytics Slide 51 June 20th, 2016

slide-118
SLIDE 118

Propagation of equality (Iteration 4)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N4..8 + Y 2..8

  • 362..725

Insight Centre for Data Analytics Slide 51 June 20th, 2016

slide-119
SLIDE 119

Propagation of equality (Iteration 4)

91 ∗ E3..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N4..8 + Y 2..8

  • 362..725

E ≥ 4 = ⌈362 − 88 91 ⌉

Insight Centre for Data Analytics Slide 51 June 20th, 2016

slide-120
SLIDE 120

Propagation of equality (Iteration 5)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N4..8 + Y 2..8

Insight Centre for Data Analytics Slide 52 June 20th, 2016

slide-121
SLIDE 121

Propagation of equality (Iteration 5)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8

  • 386..725

= 90 ∗ N4..8 + Y 2..8

  • 362..728

Insight Centre for Data Analytics Slide 52 June 20th, 2016

slide-122
SLIDE 122

Propagation of equality (Iteration 5)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N4..8 + Y 2..8

  • 386..725

Insight Centre for Data Analytics Slide 52 June 20th, 2016

slide-123
SLIDE 123

Propagation of equality (Iteration 5)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N4..8 + Y 2..8

  • 386..725

N ≥ 5 = ⌈386 − 8 90 ⌉

Insight Centre for Data Analytics Slide 52 June 20th, 2016

slide-124
SLIDE 124

Propagation of equality (Iteration 6)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N5..8 + Y 2..8

Insight Centre for Data Analytics Slide 53 June 20th, 2016

slide-125
SLIDE 125

Propagation of equality (Iteration 6)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8

  • 386..725

= 90 ∗ N5..8 + Y 2..8

  • 452..728

Insight Centre for Data Analytics Slide 53 June 20th, 2016

slide-126
SLIDE 126

Propagation of equality (Iteration 6)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N5..8 + Y 2..8

  • 452..725

Insight Centre for Data Analytics Slide 53 June 20th, 2016

slide-127
SLIDE 127

Propagation of equality (Iteration 6)

91 ∗ E4..7 + 10 ∗ R2..8 + D2..8 = 90 ∗ N5..8 + Y 2..8

  • 452..725

N ≥ 5 = ⌈452 − 8 90 ⌉, E ≥ 4 = ⌈452 − 88 91 ⌉ No further propagation at this point

Insight Centre for Data Analytics Slide 53 June 20th, 2016

slide-128
SLIDE 128

Domains after setup

1 2 3 4 5 6 7 8 9 S E N D M O R Y

Insight Centre for Data Analytics Slide 54 June 20th, 2016

slide-129
SLIDE 129

Outline

Problem Program Constraint Setup Search Step 1 Step 2 Further Steps Solution Points to Remember

Insight Centre for Data Analytics Slide 55 June 20th, 2016

slide-130
SLIDE 130

labeling built-in

labeling([S,E,N,D,M,O,R,Y])

  • Try variable is order given
  • Try values starting from smallest value in domain
  • When failing, backtrack to last open choice
  • Chronological Backtracking
  • Depth First search

Insight Centre for Data Analytics Slide 56 June 20th, 2016

slide-131
SLIDE 131

Search Tree Step 1

Variable S already fixed S E

9

Insight Centre for Data Analytics Slide 57 June 20th, 2016

slide-132
SLIDE 132

Step 2, Alternative E = 4

Variable E ∈ {4..7}, first value tested is 4 S E

4 9

Insight Centre for Data Analytics Slide 58 June 20th, 2016

slide-133
SLIDE 133

Assignment E = 4

1 2 3 4 5 6 7 8 9 S E ✹

  • N

D M O R Y

Insight Centre for Data Analytics Slide 59 June 20th, 2016

slide-134
SLIDE 134

Propagation of E = 4, equality constraint

91 ∗ 4 + 10 ∗ R2..8 + D2..8 = 90 ∗ N5..8 + Y 2..8

Insight Centre for Data Analytics Slide 60 June 20th, 2016

slide-135
SLIDE 135

Propagation of E = 4, equality constraint

91 ∗ 4 + 10 ∗ R2..8 + D2..8

  • 386..452

= 90 ∗ N5..8 + Y 2..8

  • 452..728

Insight Centre for Data Analytics Slide 60 June 20th, 2016

slide-136
SLIDE 136

Propagation of E = 4, equality constraint

91 ∗ 4 + 10 ∗ R2..8 + D2..8 = 90 ∗ N5..8 + Y 2..8

  • 452

Insight Centre for Data Analytics Slide 60 June 20th, 2016

slide-137
SLIDE 137

Propagation of E = 4, equality constraint

91 ∗ 4 + 10 ∗ R2..8 + D2..8 = 90 ∗ N5..8 + Y 2..8

  • 452

N = 5, Y = 2, R = 8, D = 8

Insight Centre for Data Analytics Slide 60 June 20th, 2016

slide-138
SLIDE 138

Result of equality propagation

1 2 3 4 5 6 7 8 9 S E N ✹

  • D

M O R

Y ✹

  • Insight Centre for Data Analytics

Slide 61 June 20th, 2016

slide-139
SLIDE 139

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N ✹

  • D

M O R

Y ✹

  • Insight Centre for Data Analytics

Slide 62 June 20th, 2016

slide-140
SLIDE 140

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N ✹

  • D

M O R

Y ✹

  • Alldifferent fails!

Insight Centre for Data Analytics Slide 62 June 20th, 2016

slide-141
SLIDE 141

Step 2, Alternative E = 5

Return to last open choice, E, and test next value S E

4

N

5 9

Insight Centre for Data Analytics Slide 63 June 20th, 2016

slide-142
SLIDE 142

Assignment E = 5

1 2 3 4 5 6 7 8 9 S E

  • N

D M O R Y

Insight Centre for Data Analytics Slide 64 June 20th, 2016

slide-143
SLIDE 143

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E

  • N

D M O R Y

Insight Centre for Data Analytics Slide 65 June 20th, 2016

slide-144
SLIDE 144

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E ✹ N | D | M O R | Y |

Insight Centre for Data Analytics Slide 65 June 20th, 2016

slide-145
SLIDE 145

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N D M O R Y N = 5, N ≥ 6

Insight Centre for Data Analytics Slide 65 June 20th, 2016

slide-146
SLIDE 146

Propagation of equality

91 ∗ 5 + 10 ∗ R2..8 + D2..8 = 90 ∗ N6..8 + Y 2..8

Insight Centre for Data Analytics Slide 66 June 20th, 2016

slide-147
SLIDE 147

Propagation of equality

91 ∗ 5 + 10 ∗ R2..8 + D2..8

  • 477..543

= 90 ∗ N6..8 + Y 2..8

  • 542..728

Insight Centre for Data Analytics Slide 66 June 20th, 2016

slide-148
SLIDE 148

Propagation of equality

91 ∗ 5 + 10 ∗ R2..8 + D2..8 = 90 ∗ N6..8 + Y 2..8

  • 542..543

Insight Centre for Data Analytics Slide 66 June 20th, 2016

slide-149
SLIDE 149

Propagation of equality

91 ∗ 5 + 10 ∗ R2..8 + D2..8 = 90 ∗ N6..8 + Y 2..8

  • 542..543

N = 6, Y ∈ {2, 3}, R = 8, D ∈ {7..8}

Insight Centre for Data Analytics Slide 66 June 20th, 2016

slide-150
SLIDE 150

Result of equality propagation

1 2 3 4 5 6 7 8 9 S E N ✹

  • D

✖ ✖ ✖ ✖ M O R

Y ✖ ✖ ✖ ✖

Insight Centre for Data Analytics Slide 67 June 20th, 2016

slide-151
SLIDE 151

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N ✹

  • D

✖ ✖ ✖ ✖ M O R

Y ✖ ✖ ✖ ✖

Insight Centre for Data Analytics Slide 68 June 20th, 2016

slide-152
SLIDE 152

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N D | M O R ✹ Y

Insight Centre for Data Analytics Slide 68 June 20th, 2016

slide-153
SLIDE 153

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N D ✹ M O R Y

Insight Centre for Data Analytics Slide 68 June 20th, 2016

slide-154
SLIDE 154

Propagation of alldifferent

1 2 3 4 5 6 7 8 9 S E N D M O R Y D = 7

Insight Centre for Data Analytics Slide 68 June 20th, 2016

slide-155
SLIDE 155

Propagation of equality

91 ∗ 5 + 10 ∗ 8 + 7 = 90 ∗ 6 + Y 2..3

Insight Centre for Data Analytics Slide 69 June 20th, 2016

slide-156
SLIDE 156

Propagation of equality

91 ∗ 5 + 10 ∗ 8 + 7

  • 542

= 90 ∗ 6 + Y 2..3

  • 542..543

Insight Centre for Data Analytics Slide 69 June 20th, 2016

slide-157
SLIDE 157

Propagation of equality

91 ∗ 5 + 10 ∗ 8 + 7 = 90 ∗ 6 + Y 2..3

  • 542

Insight Centre for Data Analytics Slide 69 June 20th, 2016

slide-158
SLIDE 158

Propagation of equality

91 ∗ 5 + 10 ∗ 8 + 7 = 90 ∗ 6 + Y 2..3

  • 542

Y = 2

Insight Centre for Data Analytics Slide 69 June 20th, 2016

slide-159
SLIDE 159

Last propagation step

1 2 3 4 5 6 7 8 9 S E N D M O R Y ✹

  • Insight Centre for Data Analytics

Slide 70 June 20th, 2016

slide-160
SLIDE 160

Further Steps: Nothing more to do

S E

4

N

5 9

Insight Centre for Data Analytics Slide 71 June 20th, 2016

slide-161
SLIDE 161

Further Steps: Nothing more to do

S E

4

N D

6 5 9

Insight Centre for Data Analytics Slide 71 June 20th, 2016

slide-162
SLIDE 162

Further Steps: Nothing more to do

S E

4

N D M

7 6 5 9

Insight Centre for Data Analytics Slide 71 June 20th, 2016

slide-163
SLIDE 163

Further Steps: Nothing more to do

S E

4

N D M O

1 7 6 5 9

Insight Centre for Data Analytics Slide 71 June 20th, 2016

slide-164
SLIDE 164

Further Steps: Nothing more to do

S E

4

N D M O R

1 7 6 5 9 Insight Centre for Data Analytics Slide 71 June 20th, 2016

slide-165
SLIDE 165

Further Steps: Nothing more to do

S E

4

N D M O R Y

8 1 7 6 5 9 Insight Centre for Data Analytics Slide 71 June 20th, 2016

slide-166
SLIDE 166

Further Steps: Nothing more to do

S E

4

N D M O R Y

2 8 1 7 6 5 9

Insight Centre for Data Analytics Slide 71 June 20th, 2016

slide-167
SLIDE 167

Complete Search Tree

S E

4

N D M O R Y

2 8 1 7 6 5 6 7 9

Insight Centre for Data Analytics Slide 72 June 20th, 2016

slide-168
SLIDE 168

Solution

9 5 6 7 + 1 8 5 1 6 5 2

Insight Centre for Data Analytics Slide 73 June 20th, 2016

slide-169
SLIDE 169

Outline

  • 1. An Initial Example
  • 2. Constraint
  • 3. Send More Money

Points to Remember Modeling in MILP

23

slide-170
SLIDE 170

Points to Remember

◮ Constraint models are expressed by:

variables + constraints + parameters

◮ Problems can have many different models, which can behave quite

  • differently. Choosing the best model is an art.

◮ Constraints can take many different forms. ◮ Propagation deals with the interaction of variables and constraints:

It removes some values that are inconsistent with a constraint from the domain of a variable.

◮ Constraints only communicate via shared variables.

24

slide-171
SLIDE 171

Points to Remember

◮ Propagation is data driven, and can be quite complex even for small

examples.

◮ Propagation usually is not sufficient, search may be required to find a

solution.

◮ The default search uses chronological depth-first backtracking,

systematically exploring the complete search space.

◮ The search choices and propagation are interleaved,

after every choice some more propagation may further reduce the problem.

25

slide-172
SLIDE 172

Applications

◮ Operation research (optimization problems) ◮ Graphical interactive systems (to express geometrical correctness) ◮ Molecular biology (DNA sequencing, 3D models of proteins) ◮ Finance ◮ Circuit verification ◮ Elaboration of natural languages (construction of efficient parsers) ◮ Scheduling of activities ◮ Configuration problem in form compilation ◮ Generation of coerent music programs [Anders and Miranda [2011]]. ◮ Data bases ◮ ... ◮ http://hsimonis.wordpress.com/

26

slide-173
SLIDE 173

Applications

Distribution of technology used at Google for optimization applications developed by the operations research team

[Slide presented by Laurent Perron on OR-Tools at CP2013]

27

slide-174
SLIDE 174

List of Contents

◮ Modeling with Finite Domain Integer Variables ◮ Introduction to Gecode ◮ Overview on global constraints ◮ Notions of local consistency ◮ Constraint propagation algorithms ◮ Filtering algorithms for global constraints ◮ Search ◮ Set variables ◮ Symmetries

28

slide-175
SLIDE 175

Outline

  • 1. An Initial Example
  • 2. Constraint
  • 3. Send More Money

Points to Remember Modeling in MILP

29

slide-176
SLIDE 176

Send More Money: ILP model 1

◮ xi ∈ {0, . . . , 9} for all i ∈ I = {S, E, N, D, M, O, R, Y } ◮ δij =

  • if xi < xj

1 if xj < xi

◮ Crypto constraint:

103x1 +102x2 +10x3 +x4 + 103x5 +102x6 +10x7 +x2 = 104x5 +103x6 +102x3 +10x2 +x8

◮ Each letter takes a different digit:

xi − xj − 10δij ≤ −1, for all i, j, i < j xj − xi + 10δij ≤ 9, for all i, j, i < j

30

slide-177
SLIDE 177

Send More Money: ILP model 2

◮ xi ∈ {0, . . . , 9} for all i ∈ I = {S, E, N, D, M, O, R, Y } ◮ yij ∈ {0, 1} for all i ∈ I, j ∈ J = {0, . . . , 9} ◮ Crypto constraint:

103x1 +102x2 +10x3 +x4 + 103x5 +102x6 +10x7 +x2 = 104x5 +103x6 +102x3 +10x2 +x8

◮ Each letter takes a different digit:

  • j∈J

yij = 1, ∀i ∈ I,

  • i∈I

yij ≤ 1, ∀j ∈ J, xi =

  • j∈J

jyij, ∀i ∈ I.

31

slide-178
SLIDE 178

Send More Money: ILP model

The quality of these formulations depends on both the tightness of the LP relaxations and the number of constraints and variables (compactness)

◮ Which of the two models is tighter?

project out all extra variables in the LP so that the polytope for LP is in the space of the x variables. By linear comb. of constraints:

Model 1 −1 ≤ xi − xj ≤ 10 − 1 Model 2

  • j∈J

xj ≥ |J| (|J| − 1) 2 , ∀J ⊂ I,

  • j∈J

xj ≤ |J| (2k − |J|) + 1 2 , ∀J ⊂ I.

◮ Can you find the convex hull of this problem?

Williams and Yan [2001] prove that model 2 is facet defining Suppose we want to maximize MONEY, how strong is the upper bound

  • btained with this formulation? How to obtain a stronger upper bound?

32

slide-179
SLIDE 179

Send More Money: ILP model (revisited)

◮ xi ∈ {0, . . . , 9} for all i ∈ I = {S, E, N, D, M, O, R, Y } ◮ Crypto constraint:

103x1 +102x2 +10x3 +x4 + 103x5 +102x6 +10x7 +x2 = 104x5 +103x6 +102x3 +10x2 +x8

◮ Each letter takes a different digit:

  • j∈J

xj ≥ |J| (|J| − 1) 2 , ∀J ⊂ I,

  • j∈J

xj ≤ |J| (2k − |J|) + 1 2 , ∀J ⊂ I. But exponentially many!

33

slide-180
SLIDE 180

Send More Money: CP model (revisited)

◮ Xi ∈ {0, . . . , 9} for all i ∈ I = {S, E, N, D, M, O, R, Y } ◮

103X1 +102X2 +10X3 +X4 + 103X5 +102X6 +10X7 +X2 = 104X5 +103X6 +102X3 +10X2 +X8

alldifferent([X1, X2, . . . , X8]).

◮ Redundant constraints (5 equality constraints)

X4 + X2 = 10 r1 + X8, X3 + X7 + r1 = 10 r2 + X2, X2 + X6 + r2 = 10 r3 + X3, X1 + X5 + r3 = 10 r4 + X6, +r4 = X5. Can we do better? Can we propagate something?

34

slide-181
SLIDE 181

Send Most Money: CP model

Gecode-python

Optimization version: max

  • i∈I ′

CiXi, I ′ = {M, O, N, E, Y }

from gecode import * s = space() letters = s.intvars(8,0,9) S,E,N,D,M,O,T,Y = letters s.rel(M,IRT_NQ,0) s.rel(S,IRT_NQ,0) s.distinct(letters) C = [1000, 100, 10, 1, 1000, 100, 10, 1,

  • 10000, -1000, -100, -10, -1]

X = [S,E,N,D, M,O,S,T, M,O,N,E,Y] s.linear(C,X,IRT_EQ,0) money = s.intvar(0,99999) s.linear([10000,1000,100,10,1],[M,O,N,E,Y], IRT_EQ, money) s.maximize(money) s.branch(letters, INT_VAR_SIZE_MIN, INT_VAL_MIN) for s2 in s.search(): print(s2.val(money), s2.val(letters))

39

slide-182
SLIDE 182

Strengths

◮ CP is excellent to explore highly constrained combinatorial spaces quickly ◮ Math programming is particulary good at deriving lower bounds ◮ LS is particualry good at derving upper bounds

40

slide-183
SLIDE 183

Differences

◮ MILP models

◮ impose modelling rules: linear inequalities and objectives ◮ emphasis on tightness and compactness of LP, strength of bounds

(remove dominated constraints)

◮ CP models

◮ a large variety of algorithms communicating with each other: global

constraints

◮ more expressiveness ◮ emphasis on exploiting substructres, include redundant constraints 41

slide-184
SLIDE 184

Resume

◮ Constraint Satisfaction Problem ◮ Modelling in CP ◮ Examples, Send More Money, Sudoku

42

slide-185
SLIDE 185

References

Anders T. and Miranda E.R. (2011). Constraint programming systems for modeling music theories and composition. ACM Comput. Surv., 43(4), pp. 30:1–30:38. Hooker J.N. (2011). Hybrid modeling. In Hybrid Optimization, edited by P.M. Pardalos, P. van Hentenryck, and M. Milano, vol. 45 of Optimization and Its Applications, pp. 11–62. Springer New York. Smith B.M. (2006). Modelling. In Handbook of Constraint Programming, edited by

  • F. Rossi, P. van Beek, and T. Walsh, chap. 11, pp. 377–406. Elsevier.

Williams H. and Yan H. (2001). Representations of the all_different predicate of constraint satisfaction in integer programming. INFORMS Journal on Computing, 13(2), pp. 96–103.

43