Mixed Integer Linear Programming Combinatorial Problem Solving (CPS) - - PowerPoint PPT Presentation

▶
mixed integer linear programming
SMART_READER_LITE
LIVE PREVIEW

Mixed Integer Linear Programming Combinatorial Problem Solving (CPS) - - PowerPoint PPT Presentation

Mixed Integer Linear Programming Combinatorial Problem Solving (CPS) Javier Larrosa Albert Oliveras Enric Rodr guez-Carbonell May 8, 2020 Mixed Integer Linear Programs A mixed integer linear program (MILP, MIP) is of the form min c


slide-1
SLIDE 1

Mixed Integer Linear Programming

Combinatorial Problem Solving (CPS)

Javier Larrosa Albert Oliveras Enric Rodr´ ıguez-Carbonell

May 8, 2020

slide-2
SLIDE 2

Mixed Integer Linear Programs

2 / 62

■

A mixed integer linear program (MILP, MIP) is of the form min cT x Ax = b x ≥ 0 xi ∈ Z ∀i ∈ I

■

If all variables need to be integer, it is called a (pure) integer linear program (ILP, IP)

■

If all variables need to be 0 or 1 (binary, boolean), it is called a 0 − 1 linear program

slide-3
SLIDE 3

Complexity: LP vs. IP

3 / 62

■

Including integer variables increases enourmously the modeling power, at the expense of more complexity

■

LP’s can be solved in polynomial time with interior-point methods (ellipsoid method, Karmarkar’s algorithm)

■

Integer Programming is an NP-complete problem. So:

◆

There is no known polynomial-time algorithm

◆

There are little chances that one will ever be found

◆

Even small problems may be hard to solve

■

What follows is one of the many approaches (and one of the most successful) for attacking IP’s

slide-4
SLIDE 4

LP Relaxation of a MIP

4 / 62

■

Given a MIP (IP) min cT x Ax = b x ≥ 0 xi ∈ Z ∀i ∈ I its linear relaxation is the LP obtained by dropping integrality constraints: (LP) min cT x Ax = b x ≥ 0

■

Can we solve IP by solving LP? By rounding?

slide-5
SLIDE 5

Branch & Bound

5 / 62

■

The optimal solution of max x + y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z is (x, y) = (1, 2), with objective 3

■

The optimal solution of its LP relaxation is (x, y) = (4, 4.5), with objective 9.5

■

No direct way of getting from (4, 4.5) to (1, 2) by rounding!

■

Something more elaborate is needed: branch & bound

slide-6
SLIDE 6

Branch & Bound

6 / 62

y x y ≥ 0 max x + y (0, 1) (1, 2) x ≥ 0 (4, 4.5) −8x + 10y ≤ 13 −2x + 2y ≥ 1

slide-7
SLIDE 7

Branch & Bound

7 / 62

■

Assume variables are bounded, i.e., have lower and upper bounds

■

Let P0 be the initial problem, LP(P0) be the LP relaxation of P0

■

If in optimal solution of LP(P0) all integer variables take integer values then it is also an optimal solution to P0

■

Else

◆

Let xj be integer variable whose value βj at optimal solution of LP(P0) is such that βj ∈ Z. Define P1 := P0 ∧ xj ≤ ⌊βj⌋ P2 := P0 ∧ xj ≥ ⌈βj⌉

◆

feasibleSols(P0) = feasibleSols(P1) ∪ feasibleSols(P2)

◆

Idea: solve P1, solve P2 and then take the best

slide-8
SLIDE 8

Branch & Bound

8 / 62

■

Let xj be integer variable whose value βj at optimal solution of LP(P0) is such that βj ∈ Z. Each of the problems P1 := P0 ∧ xj ≤ ⌊βj⌋ P2 := P0 ∧ xj ≥ ⌈βj⌉ can be solved recursively

■

We can build a binary tree of subproblems whose leaves correspond to pending problems still to be solved

■

This procedure terminates as integer vars have finite bounds and, at each split, the domain of xj becomes strictly smaller

■

If LP(Pi) has optimal solution where integer variables take integer values then solution is stored

■

If LP(Pi) is infeasible then Pi can be discarded (pruned, fathomed)

slide-9
SLIDE 9

Example

9 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

slide-10
SLIDE 10

Example

9 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

slide-11
SLIDE 11

Example

10 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 End ==================================================================== CPLEX> optimize Primal simplex - Optimal: Objective = - 8.5000000000e+00 Solution time = 0.00 sec. Iterations = 0 (0) Deterministic time = 0.00 ticks (0.37 ticks/sec) CPLEX> display solution variables x Variable Name Solution Value x 4.000000 CPLEX> display solution variables y Variable Name Solution Value y 4.500000

slide-12
SLIDE 12

Example

11 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5

slide-13
SLIDE 13

Example

11 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5

slide-14
SLIDE 14

Example

12 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds y >= 5 End ==================================================================== CPLEX> optimize Bound infeasibility column ’x’. Presolve time = 0.00 sec. (0.00 ticks) Presolve - Infeasible. Solution time = 0.00 sec. Deterministic time = 0.00 ticks (1.67 ticks/sec)

slide-15
SLIDE 15

Example

13 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5

slide-16
SLIDE 16

Example

13 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5

slide-17
SLIDE 17

Example

14 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds y <= 4 End ==================================================================== CPLEX> optimize Dual simplex - Optimal: Objective = - 7.5000000000e+00 Solution time = 0.00 sec. Iterations = 0 (0) Deterministic time = 0.00 ticks (2.68 ticks/sec) CPLEX> display solution variables x Variable Name Solution Value x 3.500000 CPLEX> display solution variables y Variable Name Solution Value y 4.000000

slide-18
SLIDE 18

Example

15 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3

slide-19
SLIDE 19

Example

15 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3

slide-20
SLIDE 20

Example

16 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x >= 4 y <= 4 End ==================================================================== CPLEX> optimize Row ’c1’ infeasible, all entries at implied bounds. Presolve time = 0.00 sec. (0.00 ticks) Presolve - Infeasible. Solution time = 0.00 sec. Deterministic time = 0.00 ticks (1.11 ticks/sec)

slide-21
SLIDE 21

Example

17 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3

slide-22
SLIDE 22

Example

17 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3

slide-23
SLIDE 23

Example

18 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x <= 3 y <= 4 End ==================================================================== CPLEX> optimize Dual simplex - Optimal: Objective = - 6.7000000000e+00 Solution time = 0.00 sec. Iterations = 0 (0) Deterministic time = 0.00 ticks (2.71 ticks/sec) CPLEX> display solution variables x Variable Name Solution Value x 3.000000 CPLEX> display solution variables y Variable Name Solution Value y 3.700000

slide-24
SLIDE 24

Example

19 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4

slide-25
SLIDE 25

Example

19 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4

slide-26
SLIDE 26

Example

20 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x <= 3 y = 4 End ==================================================================== CPLEX> optimize Bound infeasibility column ’x’. Presolve time = 0.00 sec. (0.00 ticks) Presolve - Infeasible. Solution time = 0.00 sec. Deterministic time = 0.00 ticks (1.12 ticks/sec)

slide-27
SLIDE 27

Example

21 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4

slide-28
SLIDE 28

Example

21 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4

slide-29
SLIDE 29

Example

22 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x <= 3 y <= 3 End ==================================================================== CPLEX> optimize Dual simplex - Optimal: Objective = - 5.5000000000e+00 Solution time = 0.00 sec. Iterations = 0 (0) Deterministic time = 0.00 ticks (2.71 ticks/sec) CPLEX> display solution variables x Variable Name Solution Value x 2.500000 CPLEX> display solution variables y Variable Name Solution Value y 3.000000

slide-30
SLIDE 30

Example

23 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2

slide-31
SLIDE 31

Example

23 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2

slide-32
SLIDE 32

Example

24 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x = 3 y <= 3 End ==================================================================== CPLEX> optimize Bound infeasibility column ’y’. Presolve time = 0.00 sec. (0.00 ticks) Presolve - Infeasible. Solution time = 0.00 sec. Deterministic time = 0.00 ticks (1.11 ticks/sec)

slide-33
SLIDE 33

Example

25 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2

slide-34
SLIDE 34

Example

25 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2

slide-35
SLIDE 35

Example

26 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x <= 2 y <= 3 End ==================================================================== CPLEX> optimize Dual simplex - Optimal: Objective = - 4.9000000000e+00 Solution time = 0.00 sec. Iterations = 0 (0) Deterministic time = 0.00 ticks (2.71 ticks/sec) CPLEX> display solution variables x Variable Name Solution Value x 2.000000 CPLEX> display solution variables y Variable Name Solution Value y 2.900000

slide-36
SLIDE 36

Example

27 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3

slide-37
SLIDE 37

Example

27 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3

slide-38
SLIDE 38

Example

28 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x <= 2 y = 3 End ==================================================================== CPLEX> optimize Bound infeasibility column ’x’. Presolve time = 0.00 sec. (0.00 ticks) Presolve - Infeasible. Solution time = 0.00 sec. Deterministic time = 0.00 ticks (1.12 ticks/sec)

slide-39
SLIDE 39

Example

29 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3

slide-40
SLIDE 40

Example

29 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3

slide-41
SLIDE 41

Example

30 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x <= 2 y <= 2 End ==================================================================== CPLEX> optimize Dual simplex - Optimal: Objective = - 3.5000000000e+00 Solution time = 0.00 sec. Iterations = 0 (0) Deterministic time = 0.00 ticks (2.71 ticks/sec) CPLEX> display solution variables x Variable Name Solution Value x 1.500000 CPLEX> display solution variables y Variable Name Solution Value y 2.000000

slide-42
SLIDE 42

Example

31 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3 x ≥ 2 x ≤ 1

slide-43
SLIDE 43

Example

31 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3 x ≥ 2 x ≤ 1

slide-44
SLIDE 44

Example

32 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x = 2 y <= 2 End ==================================================================== CPLEX> optimize Bound infeasibility column ’y’. Presolve time = 0.00 sec. (0.00 ticks) Presolve - Infeasible. Solution time = 0.00 sec. Deterministic time = 0.00 ticks (1.11 ticks/sec)

slide-45
SLIDE 45

Example

33 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3 x ≥ 2 x ≤ 1

slide-46
SLIDE 46

Example

33 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3 x ≥ 2 x ≤ 1

slide-47
SLIDE 47

Example

34 / 62

Min obj: - x - y Subject To c1: -2 x + 2 y >= 1 c2: -8 x + 10 y <= 13 Bounds x <= 1 y <= 2 End ==================================================================== CPLEX> optimize Dual simplex - Optimal: Objective = - 3.0000000000e+00 Solution time = 0.00 sec. Iterations = 0 (0) Deterministic time = 0.00 ticks (2.40 ticks/sec) CPLEX> display solution variables x Variable Name Solution Value x 1.000000 CPLEX> display solution variables y Variable Name Solution Value y 2.000000

slide-48
SLIDE 48

Example

35 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z

y ≤ 4 y ≥ 5 x ≥ 4 x ≤ 3 y ≤ 3 y ≥ 4 x ≥ 3 x ≤ 2 y ≤ 2 y ≥ 3 x ≥ 2 x ≤ 1

slide-49
SLIDE 49

Pruning in Branch & Bound

36 / 62

■

We have already seen that if relaxation is infeasible, the problem can be pruned

■

Now assume an (integral) solution has been previously found

■

If solution has cost Z then any pending problem Pj whose relaxation has

  • ptimal value ≥ Z can be ignored, since

cost(Pj) ≥ cost(LP(Pj)) ≥ Z The optimum will not be in any descendant of Pj!

■

This cost-based pruning of the search tree has a huge impact

  • n the efficiency of Branch & Bound
slide-50
SLIDE 50

Branch & Bound: Algorithm

37 / 62

S := {P0} /* set of pending problems */ Z := +∞ /* best cost found so far */ while S = ∅ do remove P from S solve LP(P) if LP(P) is feasible then /* if unfeasible P can be pruned */ let β be optimal basic solution of LP(P) if β satisfies integrality constraints then if cost(β) < Z then store β; update Z else if cost(LP(P)) ≥ Z then continue /* P can be pruned */ let xj be integer variable such that βj ∈ Z S := S ∪ { P ∧ xj ≤ ⌊βj⌋, P ∧ xj ≥ ⌈βj⌉ } return Z

slide-51
SLIDE 51

Heuristics in Branch & Bound

38 / 62

■

Possible choices in Branch & Bound

◆

Choice of the pending problem

■

Depth-first search

■

Breadth-first search

■

Best-first search: assuming a relaxation is solved when it is added to the set of pending problems, select the one with best cost value

slide-52
SLIDE 52

Heuristics in Branch & Bound

38 / 62

■

Possible choices in Branch & Bound

◆

Choice of the pending problem

■

Depth-first search

■

Breadth-first search

■

Best-first search: assuming a relaxation is solved when it is added to the set of pending problems, select the one with best cost value

◆

Choice of the branching variable: one that is

■

closest to halfway two integer values

■

most important in the model (e.g., 0-1 variable)

■

biggest in a variable ordering

■

the one with the largest/smallest cost coefficient

slide-53
SLIDE 53

Heuristics in Branch & Bound

38 / 62

■

Possible choices in Branch & Bound

◆

Choice of the pending problem

■

Depth-first search

■

Breadth-first search

■

Best-first search: assuming a relaxation is solved when it is added to the set of pending problems, select the one with best cost value

◆

Choice of the branching variable: one that is

■

closest to halfway two integer values

■

most important in the model (e.g., 0-1 variable)

■

biggest in a variable ordering

■

the one with the largest/smallest cost coefficient

■

No known strategy is best for all problems!

slide-54
SLIDE 54

Remarks on Branch & Bound

39 / 62

■

If integer variables are not bounded, Branch & Bound may not terminate: min 0 1 ≤ 3x − 3y ≤ 2 x, y ∈ Z is infeasible but Branch & Bound loops forever looking for solutions!

slide-55
SLIDE 55

Remarks on Branch & Bound

39 / 62

■

If integer variables are not bounded, Branch & Bound may not terminate: min 0 1 ≤ 3x − 3y ≤ 2 x, y ∈ Z is infeasible but Branch & Bound loops forever looking for solutions!

■

E.g., we first find a solution with x = 2

3.

slide-56
SLIDE 56

Remarks on Branch & Bound

39 / 62

■

If integer variables are not bounded, Branch & Bound may not terminate: min 0 1 ≤ 3x − 3y ≤ 2 x, y ∈ Z is infeasible but Branch & Bound loops forever looking for solutions!

■

E.g., we first find a solution with x = 2

3.

■

In the subproblem with x ≥ 1 we get a solution with y = 1

3.

slide-57
SLIDE 57

Remarks on Branch & Bound

39 / 62

■

If integer variables are not bounded, Branch & Bound may not terminate: min 0 1 ≤ 3x − 3y ≤ 2 x, y ∈ Z is infeasible but Branch & Bound loops forever looking for solutions!

■

E.g., we first find a solution with x = 2

3.

■

In the subproblem with x ≥ 1 we get a solution with y = 1

3.

■

In the subproblem with x ≥ 1, y ≥ 1 we get a solution with x = 5

3.

slide-58
SLIDE 58

Remarks on Branch & Bound

39 / 62

■

If integer variables are not bounded, Branch & Bound may not terminate: min 0 1 ≤ 3x − 3y ≤ 2 x, y ∈ Z is infeasible but Branch & Bound loops forever looking for solutions!

■

E.g., we first find a solution with x = 2

3.

■

In the subproblem with x ≥ 1 we get a solution with y = 1

3.

■

In the subproblem with x ≥ 1, y ≥ 1 we get a solution with x = 5

3.

■

In the subproblem with x ≥ 2, y ≥ 1 we get a solution with y = 4

3.

slide-59
SLIDE 59

Remarks on Branch & Bound

39 / 62

■

If integer variables are not bounded, Branch & Bound may not terminate: min 0 1 ≤ 3x − 3y ≤ 2 x, y ∈ Z is infeasible but Branch & Bound loops forever looking for solutions!

■

E.g., we first find a solution with x = 2

3.

■

In the subproblem with x ≥ 1 we get a solution with y = 1

3.

■

In the subproblem with x ≥ 1, y ≥ 1 we get a solution with x = 5

3.

■

In the subproblem with x ≥ 2, y ≥ 1 we get a solution with y = 4

3.

■

In the subproblem with x ≥ 2, y ≥ 2 we get a solution with x = 8

3.

slide-60
SLIDE 60

Remarks on Branch & Bound

39 / 62

■

If integer variables are not bounded, Branch & Bound may not terminate: min 0 1 ≤ 3x − 3y ≤ 2 x, y ∈ Z is infeasible but Branch & Bound loops forever looking for solutions!

■

E.g., we first find a solution with x = 2

3.

■

In the subproblem with x ≥ 1 we get a solution with y = 1

3.

■

In the subproblem with x ≥ 1, y ≥ 1 we get a solution with x = 5

3.

■

In the subproblem with x ≥ 2, y ≥ 1 we get a solution with y = 4

3.

■

In the subproblem with x ≥ 2, y ≥ 2 we get a solution with x = 8

3.

■

...

slide-61
SLIDE 61

Remarks on Branch & Bound

40 / 62

■

After solving the relaxation of P, we have to solve the relaxations of P ∧ xj ≤ ⌊βj⌋ and P ∧ xj ≥ ⌈βj⌉

■

These problems are similar. Do we have to start from scratch? Can be reuse somehow the computation for P?

■

Idea: start from the optimal solution of the parent problem

slide-62
SLIDE 62

Remarks on Branch & Bound

41 / 62

■

Let us assume that P is of the form min cTx Ax = b x ≥ 0, xi ∈ Z ∀i ∈ I

■

Let B be an optimal basis of the relaxation

■

Let xj be integer variable which at optimal solution is assigned βj ∈ Z

■

Note that xj must be basic

■

Let us consider the problem P1 = P ∧ xj ≤ ⌊βj⌋

■

We add a fresh slack variable s and a new equation: P ∧ xj + s = ⌊βj⌋

■

Since s is fresh we have (xB, s) defines a basis for the relaxation of P1

slide-63
SLIDE 63

Remarks on Branch & Bound

42 / 62

min −x − y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z ⇒ min −x − y −2x + 2y − s1 = 1 −8x + 10y + s2 = 13 x, y ≥ 0 x, y ∈ Z

■

Optimal basis of the linear relaxation is B = (x, y) with tableau      min −17

2 + 9 2s1 + s2

x = 4 − 5

2s1 − 1 2s2

y = 9

2 − 2s1 − 1 2s2

■

For the subproblem with y ≤ 4 we add equation y + s = 4 B = (x, y, s) is a basis for this subproblem with tableau          min −17

2 + 9 2s1 + s2

x = 4 − 5

2s1 − 1 2s2

y = 9

2 − 2s1 − 1 2s2

s = 4 − y = −1

2 + 2s1 + 1 2s2

slide-64
SLIDE 64

Remarks on Branch & Bound

43 / 62

■

(xB, s) defines a basis for the relaxation of P1

■

This basis is not feasible: the value in the basic solution assigned to s is ⌊βj⌋ − βj < 0. We would need a Phase I to apply the primal simplex method!

■

But since s is a slack the reduced costs have not changed: (xB, s) satisfies the optimality conditions!

■

Dual simplex method can be used: basis (xB, s) is already dual feasible, no need of (dual) Phase I

■

In practice often the dual simplex only needs very few iterations to obtain the optimal solution to the new problem

slide-65
SLIDE 65

Cutting Planes

44 / 62

■

Let us consider a MIP of the form min cT x x ∈ S where S =    x ∈ Rn

  • Ax = b

x ≥ 0 xi ∈ Z ∀i ∈ I    and its linear relaxation min cT x x ∈ P where P =    x ∈ Rn

  • Ax = b

x ≥ 0

  • ■

Let β be such that β ∈ P but β ∈ S. A cut for β is a linear inequality ˆ aT x ≤ ˆ b such that

◆

ˆ aT σ ≤ ˆ b for any σ ∈ S (feasible solutions of the MIP respect the cut)

◆

and ˆ aT β > ˆ b (β does not respect the cut)

slide-66
SLIDE 66

Cutting Planes

45 / 62

max x + y (1, 2) y x y ≥ 0 (4, 4.5) x ≥ 0 (0, 1) −2x + 2y ≥ 1 −8x + 10y ≤ 13

x + y ≤ 6

max x + y −2x + 2y ≥ 1 −8x + 10y ≤ 13 x, y ≥ 0 x, y ∈ Z x + y ≤ 6 is a cut

slide-67
SLIDE 67

Using Cuts for Solving MIP’s

46 / 62

■

Let ˆ aT x ≤ ˆ b be a cut. Then the MIP min cT x x ∈ S′ where S′ =    x ∈ Rn

  • Ax = b

ˆ aT x ≤ ˆ b x ≥ 0 xi ∈ Z ∀i ∈ I        has the same set of feasible solutions S but its LP relaxation is strictly more constrained

■

Instead of splitting into subproblems (Branch & Bound),

  • ne can add the cut and solve the relaxation of the new problem

■

In practice cuts are used together with Branch & Bound: If after adding some cuts no integer solution is found, then branch This technique is called Branch & Cut

slide-68
SLIDE 68

Gomory Cuts

47 / 62

■

There are several techniques for deriving cuts

■

Some are problem-specific (e.g., for the travelling salesman problem)

■

Here we will see a generic technique: Gomory cuts

■

Let us consider a basis B and let β be the associated basic solution. Note that for all j ∈ R we have βj = 0

■

Let xi be a basic variable such that i ∈ I and βi ∈ Z

■

E.g., this happens in the optimal basis of the relaxation when the basic solution does not meet the integrality constraints

■

Let the row of the tableau corresponding to xi be of the form xi = βi +

j∈R αijxj

slide-69
SLIDE 69

Gomory Cuts

48 / 62

■

Let x ∈ S. Then xi ∈ Z and xi = βi +

j∈R αijxj

xi − βi =

j∈R αijxj

■

Let δ = βi − ⌊βi⌋. Then 0 < δ < 1

■

Hence xi − ⌊βi⌋ = xi − βi + βi − ⌊βi⌋ = xi − βi + δ = δ + xi − βi = δ +

j∈R αijxj

slide-70
SLIDE 70

Gomory Cuts

49 / 62

δ = βi − ⌊βi⌋ xi − ⌊βi⌋ = δ +

j∈R αijxj

■

Let us define R+ = {j ∈ R | αij ≥ 0} R− = {j ∈ R | αij < 0}

■

Assume

j∈R αijxj ≥ 0.

slide-71
SLIDE 71

Gomory Cuts

49 / 62

δ = βi − ⌊βi⌋ xi − ⌊βi⌋ = δ +

j∈R αijxj

■

Let us define R+ = {j ∈ R | αij ≥ 0} R− = {j ∈ R | αij < 0}

■

Assume

j∈R αijxj ≥ 0.

Then δ +

j∈R αijxj > 0 and xi − ⌊βi⌋ ∈ Z imply

δ +

  • j∈R

αijxj ≥ 1

  • j∈R+

αijxj ≥

  • j∈R

αijxj ≥ 1 − δ

  • j∈R+

αij 1 − δ xj ≥ 1

slide-72
SLIDE 72

Gomory Cuts

49 / 62

δ = βi − ⌊βi⌋ xi − ⌊βi⌋ = δ +

j∈R αijxj

■

Let us define R+ = {j ∈ R | αij ≥ 0} R− = {j ∈ R | αij < 0}

■

Assume

j∈R αijxj ≥ 0.

Then δ +

j∈R αijxj > 0 and xi − ⌊βi⌋ ∈ Z imply

δ +

  • j∈R

αijxj ≥ 1

  • j∈R+

αijxj ≥

  • j∈R

αijxj ≥ 1 − δ

  • j∈R+

αij 1 − δ xj ≥ 1 Moreover

j∈R−

−αij

δ

  • xj ≥ 0
slide-73
SLIDE 73

Gomory Cuts

50 / 62

δ = βi − ⌊βi⌋ xi − ⌊βi⌋ = δ +

j∈R αijxj

■

Let us define R+ = {j ∈ R | αij ≥ 0} R− = {j ∈ R | αij < 0}

■

Assume

j∈R αijxj < 0.

slide-74
SLIDE 74

Gomory Cuts

50 / 62

δ = βi − ⌊βi⌋ xi − ⌊βi⌋ = δ +

j∈R αijxj

■

Let us define R+ = {j ∈ R | αij ≥ 0} R− = {j ∈ R | αij < 0}

■

Assume

j∈R αijxj < 0.

Then δ +

j∈R αijxj < 1 and xi − ⌊βi⌋ ∈ Z imply

δ +

  • j∈R

αijxj ≤ 0

  • j∈R−

αijxj ≤

  • j∈R

αijxj ≤ −δ

  • j∈R−

−αij δ

  • xj ≥ 1
slide-75
SLIDE 75

Gomory Cuts

50 / 62

δ = βi − ⌊βi⌋ xi − ⌊βi⌋ = δ +

j∈R αijxj

■

Let us define R+ = {j ∈ R | αij ≥ 0} R− = {j ∈ R | αij < 0}

■

Assume

j∈R αijxj < 0.

Then δ +

j∈R αijxj < 1 and xi − ⌊βi⌋ ∈ Z imply

δ +

  • j∈R

αijxj ≤ 0

  • j∈R−

αijxj ≤

  • j∈R

αijxj ≤ −δ

  • j∈R−

−αij δ

  • xj ≥ 1

Moreover

j∈R+ αij 1−δxj ≥ 0

slide-76
SLIDE 76

Gomory Cuts

51 / 62

■

In any case

  • j∈R−

−αij δ

  • xj +
  • j∈R+

αij 1 − δ xj ≥ 1 for any x ∈ S. However, when x = β this inequality is not satisfied (set xj = 0 for j ∈ R)

■

In the example:      min −17

2 + 9 2s1 + s2

x = 4 − 5

2s1 − 1 2s2

y = 9

2 − 2s1 − 1 2s2

y violates the integrality condition, we have δ = 1

2, j∈R αijxj = −2s1 − 1 2s2

The cut is 4s1 + s2 ≥ 1, which projected on x, y is y ≤ 4.

slide-77
SLIDE 77

Ensuring All Vertices Are Integer

52 / 62

■

Let us assume A, b have coefficients in Z

■

Sometimes it is possible to ensure for an IP that all vertices of the relaxation are integer

■

For instance, when the matrix A is totally unimodular: the determinant of every square submatrix is 0 or ±1

slide-78
SLIDE 78

Ensuring All Vertices Are Integer

52 / 62

■

Let us assume A, b have coefficients in Z

■

Sometimes it is possible to ensure for an IP that all vertices of the relaxation are integer

■

For instance, when the matrix A is totally unimodular: the determinant of every square submatrix is 0 or ±1 In that case all bases have inverses with integer coefficients Recall Cramer’s rule: if B is an invertible matrix, then B−1 = 1 det(B)adj(B) where adj(B) is the adjugate matrix of B Recall also that adj(B) = ((−1)i+j det(Mji))1≤i,j≤n, where Mij is matrix B after removing the i-th row and the j-th column

slide-79
SLIDE 79

Ensuring All Vertices Are Integer

53 / 62

■

Sufficient condition for total unimodularity of a matrix A: (Hoffman & Gale’s Theorem) 1. Each element of A is 0 or ±1 2. No more than two non-zeros appear in each columm 3. Rows can be partitioned in two subsets R1 and R2 s.t. (a) If a column contains two non-zeros of the same sign, the row of one of them belongs to one subset, and the row of the other, to the other subset (b) If a column contains two non-zeros of different signs, the rows of both of them belong to the same subset

slide-80
SLIDE 80

Assignment Problem

54 / 62

■

n = # of workers = # of tasks

■

Each worker must be assigned to exactly one task

■

Each task is to be performed by exactly one worker

■

cij = cost when worker i performs task j

slide-81
SLIDE 81

Assignment Problem

54 / 62

■

n = # of workers = # of tasks

■

Each worker must be assigned to exactly one task

■

Each task is to be performed by exactly one worker

■

cij = cost when worker i performs task j xij = 1 if worker i performs task j

  • therwise

min n

i=1

n

j=1 cijxij

n

j=1 xij = 1

∀i ∈ {1, . . . , n} n

i=1 xij = 1

∀j ∈ {1, . . . , n} xij ∈ {0, 1} ∀i, j ∈ {1, . . . , n}

■

This problem satisfies Hoffman & Gale’s conditions

slide-82
SLIDE 82

Ensuring All Vertices Are Integer

55 / 62

■

Several kinds of IP’s satisfy Hoffman & Gale’s conditions:

◆

Assignment

◆

Transportation

◆

Maximum flow

◆

Shortest path

◆

...

■

Usually ad-hoc network algorithms are more efficient for these problems than the simplex method as presented here

slide-83
SLIDE 83

Ensuring All Vertices Are Integer

55 / 62

■

Several kinds of IP’s satisfy Hoffman & Gale’s conditions:

◆

Assignment

◆

Transportation

◆

Maximum flow

◆

Shortest path

◆

...

■

Usually ad-hoc network algorithms are more efficient for these problems than the simplex method as presented here

■

But:

◆

The simplex method can be specialized: network simplex method

◆

Simplex techniques can be applied if the problem is not a purely network one but has extra constraints

slide-84
SLIDE 84

Expressing Logical Constraints

56 / 62

■

Sometimes we want to have an indicator variable of a contraint: a 0/1 variable equal to 1 iff the constraint is true (= reification in CP)

■

E.g., let us to encode δ = 1 ↔ aT x ≤ b, where δ is a 0/1 var

slide-85
SLIDE 85

Expressing Logical Constraints

56 / 62

■

Sometimes we want to have an indicator variable of a contraint: a 0/1 variable equal to 1 iff the constraint is true (= reification in CP)

■

E.g., let us to encode δ = 1 ↔ aT x ≤ b, where δ is a 0/1 var

■

Assume aT x ∈ Z for all feasible solution x Let U be an upper bound of aT x − b for all feasible solutions Let L be a lower bound of aT x − b for all feasible solutions

slide-86
SLIDE 86

Expressing Logical Constraints

56 / 62

■

Sometimes we want to have an indicator variable of a contraint: a 0/1 variable equal to 1 iff the constraint is true (= reification in CP)

■

E.g., let us to encode δ = 1 ↔ aT x ≤ b, where δ is a 0/1 var

■

Assume aT x ∈ Z for all feasible solution x Let U be an upper bound of aT x − b for all feasible solutions Let L be a lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b can be encoded with aT x − b ≤ U(1 − δ)

slide-87
SLIDE 87

Expressing Logical Constraints

56 / 62

■

Sometimes we want to have an indicator variable of a contraint: a 0/1 variable equal to 1 iff the constraint is true (= reification in CP)

■

E.g., let us to encode δ = 1 ↔ aT x ≤ b, where δ is a 0/1 var

■

Assume aT x ∈ Z for all feasible solution x Let U be an upper bound of aT x − b for all feasible solutions Let L be a lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b can be encoded with aT x − b ≤ U(1 − δ) 2. δ = 1 ← aT x ≤ b δ = 0 → aT x > b δ = 0 → aT x ≥ b + 1 can be encoded with aT x − b ≥ (L − 1)δ + 1

slide-88
SLIDE 88

Expressing Logical Constraints

57 / 62

■

We want to encode δ = 1 ↔ aT x ≤ b, where δ is a 0/1 var

■

Now assume that aT x is real-valued. Let U be an upper bound of aT x − b for all feasible solutions Let L be a lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b can be encoded with aT x − b ≤ U(1 − δ)

slide-89
SLIDE 89

Expressing Logical Constraints

57 / 62

■

We want to encode δ = 1 ↔ aT x ≤ b, where δ is a 0/1 var

■

Now assume that aT x is real-valued. Let U be an upper bound of aT x − b for all feasible solutions Let L be a lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b can be encoded with aT x − b ≤ U(1 − δ) 2. δ = 1 ← aT x ≤ b δ = 0 → aT x > b Can only be modeled if we allow for a tolerance ǫ

slide-90
SLIDE 90

Expressing Logical Constraints

57 / 62

■

We want to encode δ = 1 ↔ aT x ≤ b, where δ is a 0/1 var

■

Now assume that aT x is real-valued. Let U be an upper bound of aT x − b for all feasible solutions Let L be a lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b can be encoded with aT x − b ≤ U(1 − δ) 2. δ = 1 ← aT x ≤ b δ = 0 → aT x > b Can only be modeled if we allow for a tolerance ǫ δ = 0 → aT x ≥ b + ǫ can be encoded with aT x − b ≥ (L − ǫ)δ + ǫ

slide-91
SLIDE 91

Expressing Logical Constraints

58 / 62

■

We want to encode δ = 1 ↔ aT x = b, where δ is a 0/1 var

■

Assume that aT x is real-valued. Let U be upper bound of aT x − b for all feasible solutions Let L be lower bound of aT x − b for all feasible solutions

slide-92
SLIDE 92

Expressing Logical Constraints

58 / 62

■

We want to encode δ = 1 ↔ aT x = b, where δ is a 0/1 var

■

Assume that aT x is real-valued. Let U be upper bound of aT x − b for all feasible solutions Let L be lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b ⇒ aT x − b ≤ U(1 − δ)

slide-93
SLIDE 93

Expressing Logical Constraints

58 / 62

■

We want to encode δ = 1 ↔ aT x = b, where δ is a 0/1 var

■

Assume that aT x is real-valued. Let U be upper bound of aT x − b for all feasible solutions Let L be lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b ⇒ aT x − b ≤ U(1 − δ) 2. δ = 1 → aT x ≥ b ⇒ aT x − b ≥ L(1 − δ)

slide-94
SLIDE 94

Expressing Logical Constraints

58 / 62

■

We want to encode δ = 1 ↔ aT x = b, where δ is a 0/1 var

■

Assume that aT x is real-valued. Let U be upper bound of aT x − b for all feasible solutions Let L be lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b ⇒ aT x − b ≤ U(1 − δ) 2. δ = 1 → aT x ≥ b ⇒ aT x − b ≥ L(1 − δ) 3. δ = 1 ← aT x = b δ = 0 → aT x = b δ = 0 → aT x < b ∨ aT x > b

slide-95
SLIDE 95

Expressing Logical Constraints

58 / 62

■

We want to encode δ = 1 ↔ aT x = b, where δ is a 0/1 var

■

Assume that aT x is real-valued. Let U be upper bound of aT x − b for all feasible solutions Let L be lower bound of aT x − b for all feasible solutions 1. δ = 1 → aT x ≤ b ⇒ aT x − b ≤ U(1 − δ) 2. δ = 1 → aT x ≥ b ⇒ aT x − b ≥ L(1 − δ) 3. δ = 1 ← aT x = b δ = 0 → aT x = b δ = 0 → aT x < b ∨ aT x > b Let ǫ be the tolerance, δ′, δ′′ auxiliary 0/1 vars δ = 0 → δ′ = 0 ∨ δ′′ = 0 ⇒ δ′ + δ′′ − δ ≤ 1 δ′ = 0 → aT x ≤ b − ǫ ⇒ aT x − b ≤ (U + ǫ)δ′ − ǫ δ′′ = 0 → aT x ≥ b + ǫ ⇒ aT x − b ≥ (L − ǫ)δ′′ + ǫ

slide-96
SLIDE 96

Expressing Logical Constraints

59 / 62

■

Boolean expressions can be modeled with 0/1 vars

■

If xi is a 0/1 variable, let Xi be a boolean variable such that Xi is true iff xi = 1 X1 ∨ X2 iff x1 + x2 ≥ 1 X1 ∧ X2 iff x1 = x2 = 1 ¬X1 iff x1 = 0 X1 → X2 iff x1 ≤ x2 X1 ↔ X2 iff x1 = x2

slide-97
SLIDE 97

Example

60 / 62

Let Xi represent “Ingredient i is in the blend”, i ∈ {A, B, C}. Express the sentence “If ingredient A is in the blend, then ingredient B or C (or both) must also be in the blend” with linear constraints.

slide-98
SLIDE 98

Example

60 / 62

Let Xi represent “Ingredient i is in the blend”, i ∈ {A, B, C}. Express the sentence “If ingredient A is in the blend, then ingredient B or C (or both) must also be in the blend” with linear constraints.

■

We need to express XA → (XB ∨ XC).

■

Equivalently, ¬XA ∨ XB ∨ XC.

■

¬XA ∨ XB ∨ XC is equivalent to (1 − xA) + xB + xC ≥ 1.

■

So xB + xC ≥ xA

slide-99
SLIDE 99

Example (Fixed Setup Charge)

61 / 62

Let x be the quantity of a product with unit production cost c1. If the product is manufactured at all, there is a setup cost c0 Cost of producing x units = if x = 0 c0 + c1x if x > 0 Want to minimize costs. Model as a MIP? (for simplicity, additional constraints are not specified and can be omitted)

slide-100
SLIDE 100

Example (Fixed Setup Charge)

61 / 62

Let x be the quantity of a product with unit production cost c1. If the product is manufactured at all, there is a setup cost c0 Cost of producing x units = if x = 0 c0 + c1x if x > 0 Want to minimize costs. Model as a MIP? (for simplicity, additional constraints are not specified and can be omitted) Let δ be 0/1 var such that x > 0 → δ = 1 (i.e., δ = 0 → x ≤ 0): add constraint x − Uδ ≤ 0, where U is the upper bound on x Then the cost is c0δ + c1x. No need to express x > 0 ← δ = 1, i.e. x = 0 → δ = 0 Minimization will make δ = 0 if possible (i.e., if x = 0)

slide-101
SLIDE 101

Example (Capacity Expansion)

62 / 62

Let aT x be the consumption of a limited resource in a production process Want to relax the constraint aT x ≤ b by increasing capacity b. Capacity can be expanded to bi b = b0 < b1 < b2 < · · · < bt with costs, respectively, 0 = c0 < c1 < c2 < · · · < ct Want to minimize costs. Model as a MIP? (for simplicity, additional constraints are not specified and can be omitted)

slide-102
SLIDE 102

Example (Capacity Expansion)

62 / 62

Let aT x be the consumption of a limited resource in a production process Want to relax the constraint aT x ≤ b by increasing capacity b. Capacity can be expanded to bi b = b0 < b1 < b2 < · · · < bt with costs, respectively, 0 = c0 < c1 < c2 < · · · < ct Want to minimize costs. Model as a MIP? (for simplicity, additional constraints are not specified and can be omitted) Let 0/1 variables δi mean “capacity expanded to bi”. Then:

■

t

i=0 δi = 1

■

aT x ≤ t

i=0 biδi

■

Cost function: t

i=0 ciδi