Branch and Bound Marco Chiarandini Department of Mathematics & - - PowerPoint PPT Presentation

branch and bound
SMART_READER_LITE
LIVE PREVIEW

Branch and Bound Marco Chiarandini Department of Mathematics & - - PowerPoint PPT Presentation

DM545 Linear and Integer Programming Lecture 13 Branch and Bound Marco Chiarandini Department of Mathematics & Computer Science University of Southern Denmark Branch and Bound Outline Preprocessing 1. Branch and Bound 2. Preprocessing


slide-1
SLIDE 1

DM545 Linear and Integer Programming Lecture 13

Branch and Bound

Marco Chiarandini

Department of Mathematics & Computer Science University of Southern Denmark

slide-2
SLIDE 2

Branch and Bound Preprocessing

Outline

  • 1. Branch and Bound
  • 2. Preprocessing

2

slide-3
SLIDE 3

Branch and Bound Preprocessing

Exam

  • Tilladt Håndscanner/digital pen og ordbogsprogrammet fra ordbogen.com
  • Ikke tilladt at anvende digitalt kamera eller webcam o. lign. metoder for at digitalisere sin

besvarelse

  • Du afleverer efter fristen og kun en gang
  • Exam Monitor er et lille program, som logger, hvilke programmer du afvikler på din computer

under eksamen, samtidig med at din skærm optages. https://em.sdu.dk/

  • Internet

Internet er ikke tilladt ved eksamener på NAT, men undtagelsesvis til denne eksamen er det tilladt, at benytte følgende webside http: // www. imada. sdu. dk/ ~marco/ DM545/ og siderne linket derfra. Det er ikke tilladt at benytte andre sider

  • Vejledning og templates snart tilgænglig fra kurset web siden ved afsnittet Assessment
  • Kom vel forberedet, bring noget at drikke og spise

3

slide-4
SLIDE 4

Branch and Bound Preprocessing

To come

  • Two weeks left
  • This week: two lectures + joint training class on Wednesday
  • Next week: two exercise classes + one lecture.
  • Question time? Thursday 31st at 9:00?

4

slide-5
SLIDE 5

Branch and Bound Preprocessing

Outline

  • 1. Branch and Bound
  • 2. Preprocessing

5

slide-6
SLIDE 6

Branch and Bound Preprocessing

Branch and Bound

  • Consider the problem z = max{cTx : x ∈ S}
  • Divide and conquer: let S = S1 ∪ . . . ∪ Sk be a decomposition of S into smaller sets, and let

zk = max{cTx : x ∈ Sk} for k = 1, . . . , K. Then z = maxk zk

6

slide-7
SLIDE 7

Branch and Bound Preprocessing

Branch and Bound

  • Consider the problem z = max{cTx : x ∈ S}
  • Divide and conquer: let S = S1 ∪ . . . ∪ Sk be a decomposition of S into smaller sets, and let

zk = max{cTx : x ∈ Sk} for k = 1, . . . , K. Then z = maxk zk For instance if S ⊆ {0, 1}3 the enumeration tree is:

S S0 S00 S000 x3 = 0 S001 x2 = 0 S01 S010 S011 x1 = 0 S1 S10 S100 S101 S11 S110 S111 x1 = 1

6

slide-8
SLIDE 8

Branch and Bound Preprocessing

Bounding

Let’s consider a maximization problem (gurobi’s default is minimization)

  • Let zk be an upper bound on zk (dual bound)
  • Let zk be a lower bound on zk (primal bound)
  • (zk ≤ zk ≤ zk)

7

slide-9
SLIDE 9

Branch and Bound Preprocessing

Bounding

Let’s consider a maximization problem (gurobi’s default is minimization)

  • Let zk be an upper bound on zk (dual bound)
  • Let zk be a lower bound on zk (primal bound)
  • (zk ≤ zk ≤ zk)
  • z =

7

slide-10
SLIDE 10

Branch and Bound Preprocessing

Bounding

Let’s consider a maximization problem (gurobi’s default is minimization)

  • Let zk be an upper bound on zk (dual bound)
  • Let zk be a lower bound on zk (primal bound)
  • (zk ≤ zk ≤ zk)
  • z = maxk zk is a lower bound on z
  • z =

7

slide-11
SLIDE 11

Branch and Bound Preprocessing

Bounding

Let’s consider a maximization problem (gurobi’s default is minimization)

  • Let zk be an upper bound on zk (dual bound)
  • Let zk be a lower bound on zk (primal bound)
  • (zk ≤ zk ≤ zk)
  • z = maxk zk is a lower bound on z
  • z = maxk zk is an upper bound on z

7

slide-12
SLIDE 12

Branch and Bound Preprocessing

Pruning

27 13 20 20 25 15

z = z =

8

slide-13
SLIDE 13

Branch and Bound Preprocessing

Pruning

27 13 20 20 25 15

z = 25 z = 20 pruned by optimality

8

slide-14
SLIDE 14

Branch and Bound Preprocessing

Pruning

27 13 20 20 25 15

z = 25 z = 20 pruned by optimality

27 13 20 18 26 21

z = z =

8

slide-15
SLIDE 15

Branch and Bound Preprocessing

Pruning

27 13 20 20 25 15

z = 25 z = 20 pruned by optimality

27 13 20 18 26 21

z = 26 z = 21 pruned by bounding

8

slide-16
SLIDE 16

Branch and Bound Preprocessing

Pruning

27 13 20 20 25 15

z = 25 z = 20 pruned by optimality

27 13 20 18 26 21

z = 26 z = 21 pruned by bounding

40 −∞ 24 13 37 −∞

z = z =

8

slide-17
SLIDE 17

Branch and Bound Preprocessing

Pruning

27 13 20 20 25 15

z = 25 z = 20 pruned by optimality

27 13 20 18 26 21

z = 26 z = 21 pruned by bounding

40 −∞ 24 13 37 −∞

z = 37 z = 13 nothing to prune

8

slide-18
SLIDE 18

Branch and Bound Preprocessing

Pruning

27 13 26 14

infeas.

z = 26 z = 14 pruned by infeasibility

9

slide-19
SLIDE 19

Branch and Bound Preprocessing

Example

max x1 + 2x2 x1 + 4x2 ≤ 8 4x1 + x2 ≤ 8 x1, x2 ≥ 0, integer

x1 + 4x2 = 8 4x1 + x2 = 8 x1 + 2x2 = 1 x1 x2

  • Solve LP

| | x1 | x2 | x3 | x4 | -z | b | |---+----+----+----+----+----+---| | | 1 | 4 | 1 | 0 | 0 | 8 | | | 4 | 1 | 0 | 1 | 0 | 8 | |---+----+----+----+----+----+---| | | 1 | 2 | 0 | 0 | 1 | 0 |

10

slide-20
SLIDE 20

Branch and Bound Preprocessing

Example

max x1 + 2x2 x1 + 4x2 ≤ 8 4x1 + x2 ≤ 8 x1, x2 ≥ 0, integer

x1 + 4x2 = 8 4x1 + x2 = 8 x1 + 2x2 = 1 x1 x2

  • Solve LP

| | x1 | x2 | x3 | x4 | -z | b | |---+----+----+----+----+----+---| | | 1 | 4 | 1 | 0 | 0 | 8 | | | 4 | 1 | 0 | 1 | 0 | 8 | |---+----+----+----+----+----+---| | | 1 | 2 | 0 | 0 | 1 | 0 | | | x1 | x2 | x3 | x4 | -z | b | |--------------+----+------+----+------+----+----| | I’=I-II’ | 0 | 15/4 | 1 | -1/4 | 0 | 6 | | II’=1/4II | 1 | 1/4 | 0 | 1/4 | 0 | 2 | |--------------+----+------+----+------+----+----| | III’=III-II’ | 0 | 7/4 | 0 | -1/4 | 0 | -2 |

10

slide-21
SLIDE 21

Branch and Bound Preprocessing

  • continuing

| | x1 | x2 | x3 | x4 | -z | b | |----------------+----+----+-------+-------+----+---------| | I’=4/15I | 0 | 1 | 4/15 | -1/15 | 0 | 24/15 | | II’=II-1/4I’ | 1 | 0 | -1/15 | 4/15 | 0 | 24/15 | |----------------+----+----+-------+-------+----+---------| | III’=III-7/4I’ | 0 | 0 | -7/15 | -3/5 | 1 | -2-14/5 |

x2 = 1 + 3/5 = 1.6 x1 = 8/5 The optimal solution will not be more than 2 + 14/5 = 4.8

11

slide-22
SLIDE 22

Branch and Bound Preprocessing

  • continuing

| | x1 | x2 | x3 | x4 | -z | b | |----------------+----+----+-------+-------+----+---------| | I’=4/15I | 0 | 1 | 4/15 | -1/15 | 0 | 24/15 | | II’=II-1/4I’ | 1 | 0 | -1/15 | 4/15 | 0 | 24/15 | |----------------+----+----+-------+-------+----+---------| | III’=III-7/4I’ | 0 | 0 | -7/15 | -3/5 | 1 | -2-14/5 |

x2 = 1 + 3/5 = 1.6 x1 = 8/5 The optimal solution will not be more than 2 + 14/5 = 4.8

  • Both variables are fractional, we pick one of the two:

4.8 x1 ≤ 1 x1 ≥ 2

11

slide-23
SLIDE 23

Branch and Bound Preprocessing

  • continuing

| | x1 | x2 | x3 | x4 | -z | b | |----------------+----+----+-------+-------+----+---------| | I’=4/15I | 0 | 1 | 4/15 | -1/15 | 0 | 24/15 | | II’=II-1/4I’ | 1 | 0 | -1/15 | 4/15 | 0 | 24/15 | |----------------+----+----+-------+-------+----+---------| | III’=III-7/4I’ | 0 | 0 | -7/15 | -3/5 | 1 | -2-14/5 |

x2 = 1 + 3/5 = 1.6 x1 = 8/5 The optimal solution will not be more than 2 + 14/5 = 4.8

  • Both variables are fractional, we pick one of the two:

4.8 x1 ≤ 1 x1 ≥ 2 x1 + 4x2 = 8 4x1 + x2 = 8 x1 + 2x2 = 1 x1 = 1 x2 x1

11

slide-24
SLIDE 24

Branch and Bound Preprocessing

  • Let’s consider first the left branch:

12

slide-25
SLIDE 25

Branch and Bound Preprocessing

  • Let’s consider first the left branch:

| | x1 | x2 | x3 | x4 | x5 | -z | b | |---+----+----+-------+-------+----+----+-------| | | 1 | 0 | 0 | 0 | 1 | 0 | 1 | | | 0 | 1 | 4/15 | -1/15 | 0 | 0 | 24/15 | | | 1 | 0 | -1/15 | 4/15 | 0 | 0 | 24/15 | |---+----+----+-------+-------+----+----+-------| | | 0 | 0 | -7/15 | -3/5 | 0 | 1 | -24/5 |

12

slide-26
SLIDE 26

Branch and Bound Preprocessing

  • Let’s consider first the left branch:

| | x1 | x2 | x3 | x4 | x5 | -z | b | |---+----+----+-------+-------+----+----+-------| | | 1 | 0 | 0 | 0 | 1 | 0 | 1 | | | 0 | 1 | 4/15 | -1/15 | 0 | 0 | 24/15 | | | 1 | 0 | -1/15 | 4/15 | 0 | 0 | 24/15 | |---+----+----+-------+-------+----+----+-------| | | 0 | 0 | -7/15 | -3/5 | 0 | 1 | -24/5 | | | x1 | x2 | x3 | x4 | x5 | b | -z | |----------+----+----+-------+-------+----+---+-------| | I’=I-III | 0 | 0 | 1/15 | -4/15 | 1 | 0 | -9/15 | | | 0 | 1 | 4/15 | -1/15 | 0 | 0 | 24/15 | | | 1 | 0 | -1/15 | 4/15 | 0 | 0 | 24/15 | |----------+----+----+-------+-------+----+---+-------| | | 0 | 0 | -7/15 | -3/5 | 0 | 1 | -24/5 |

12

slide-27
SLIDE 27

Branch and Bound Preprocessing

  • Let’s consider first the left branch:

| | x1 | x2 | x3 | x4 | x5 | -z | b | |---+----+----+-------+-------+----+----+-------| | | 1 | 0 | 0 | 0 | 1 | 0 | 1 | | | 0 | 1 | 4/15 | -1/15 | 0 | 0 | 24/15 | | | 1 | 0 | -1/15 | 4/15 | 0 | 0 | 24/15 | |---+----+----+-------+-------+----+----+-------| | | 0 | 0 | -7/15 | -3/5 | 0 | 1 | -24/5 | | | x1 | x2 | x3 | x4 | x5 | b | -z | |----------+----+----+-------+-------+----+---+-------| | I’=I-III | 0 | 0 | 1/15 | -4/15 | 1 | 0 | -9/15 | | | 0 | 1 | 4/15 | -1/15 | 0 | 0 | 24/15 | | | 1 | 0 | -1/15 | 4/15 | 0 | 0 | 24/15 | |----------+----+----+-------+-------+----+---+-------| | | 0 | 0 | -7/15 | -3/5 | 0 | 1 | -24/5 | | | x1 | x2 | x3 | x4 | x5 | b | -z | |-------------+----+----+--------+----+-------+---+--------| | I’=-15/4I | 0 | 0 | -1/4 | 1 | -15/4 | 0 | 9/4 | | II’=II-1/4I | 0 | 1 | 15/60 | 0 | -1/4 | 0 | 7/4 | | III’=III+I | 1 | 0 | 0 | 0 | 1 | 0 | 1 | |-------------+----+----+--------+----+-------+---+--------| | | 0 | 0 | -37/60 | 0 | -9/4 | 1 | -90/20 |

always a b term negative after branching: b1 = ⌊¯ b3⌋ ¯ b1 = ⌊¯ b3⌋ − b3 < 0 Dual simplex: minj{| cj

aij | : aij < 0}

12

slide-28
SLIDE 28

Branch and Bound Preprocessing

  • Let’s branch again

4.8 4.5 x2 ≤ 1 x2 ≥ 2 x1 ≤ 1 x1 ≥ 2

13

slide-29
SLIDE 29

Branch and Bound Preprocessing

  • Let’s branch again

4.8 4.5 x2 ≤ 1 x2 ≥ 2 x1 ≤ 1 x1 ≥ 2 x1 + 4x2 = 8 4x1 + x2 = 8 x1 + 2x2 = 1 x2 x1

13

slide-30
SLIDE 30

Branch and Bound Preprocessing

  • Let’s branch again

4.8 4.5 B x2 ≤ 1 A x2 ≥ 2 x1 ≤ 1 C x1 ≥ 2 x1 + 4x2 = 8 4x1 + x2 = 8 x1 + 2x2 = 1 x2 x1

We have three open problems. Which one we choose next? Let’s take A.

13

slide-31
SLIDE 31

Branch and Bound Preprocessing

| | x1 | x2 | x3 | x4 | x5 | x6 | b | -z | |---+----+----+--------+----+-------+----+---+------| | | 0 | -1 | 0 | 0 | 0 | 1 | 0 | -2 | | | 0 | 0 | -1/4 | 1 | -15/4 | | 0 | 9/4 | | | 0 | 1 | 15/60 | 0 | -1/4 | | 0 | 7/4 | | | 1 | 0 | 0 | 0 | 1 | | 0 | 1 | |---+----+----+--------+----+-------+----+---+------| | | 0 | 0 | -37/60 | 0 | -9/4 | | 1 | -9/2 |

14

slide-32
SLIDE 32

Branch and Bound Preprocessing

| | x1 | x2 | x3 | x4 | x5 | x6 | b | -z | |---+----+----+--------+----+-------+----+---+------| | | 0 | -1 | 0 | 0 | 0 | 1 | 0 | -2 | | | 0 | 0 | -1/4 | 1 | -15/4 | | 0 | 9/4 | | | 0 | 1 | 15/60 | 0 | -1/4 | | 0 | 7/4 | | | 1 | 0 | 0 | 0 | 1 | | 0 | 1 | |---+----+----+--------+----+-------+----+---+------| | | 0 | 0 | -37/60 | 0 | -9/4 | | 1 | -9/2 | | | x1 | x2 | x3 | x4 | x5 | x6 | b | -z | |-------+----+----+--------+----+-------+----+---+------| | III+I | 0 | 0 | 1/4 | 0 | -1/4 | 1 | 0 | -1/4 | | | 0 | 0 | -1/4 | 1 | -15/4 | | 0 | 9/4 | | | 0 | 1 | 15/60 | 0 | -1/4 | | 0 | 7/4 | | | 1 | 0 | 0 | 0 | 1 | | 0 | 1 | |-------+----+----+--------+----+-------+----+---+------| | | 0 | 0 | -37/60 | 0 | -9/4 | | 1 | -9/2 |

continuing we find: x1 = 0 x2 = 2 OPT = 4

14

slide-33
SLIDE 33

Branch and Bound Preprocessing

The final tree:

4.8 −∞ 4.5 −∞ 3 3 x1=1 x2=1

x2 ≤ 1

4 4 x1=0 x2=2

x2 ≥ 2 x2 ≤ 1

2 2 x1=2 x2=0

x1 ≥ 2

The optimal solution is 4.

15

slide-34
SLIDE 34

Branch and Bound Preprocessing

Pruning

Pruning:

  • 1. by optimality: zk = max{cTx : x ∈ Sk}
  • 2. by bound zk ≤ z

Example:

5.8 −∞ 4.5 −∞ 4 4 2.3 −∞

  • 3. by infeasibility Sk = ∅

16

slide-35
SLIDE 35

Branch and Bound Preprocessing

B&B Components

Bounding:

  • 1. LP relaxation
  • 2. Lagrangian relaxation
  • 3. Combinatorial relaxation
  • 4. Duality

17

slide-36
SLIDE 36

Branch and Bound Preprocessing

B&B Components

Bounding:

  • 1. LP relaxation
  • 2. Lagrangian relaxation
  • 3. Combinatorial relaxation
  • 4. Duality

Branching: S1 = S ∩ {x : xj ≤ ⌊¯ xj⌋} S2 = S ∩ {x : xj ≥ ⌈¯ xj⌉} thus the current optimum is not feasible either in S1 or in S2.

17

slide-37
SLIDE 37

Branch and Bound Preprocessing

B&B Components

Bounding:

  • 1. LP relaxation
  • 2. Lagrangian relaxation
  • 3. Combinatorial relaxation
  • 4. Duality

Branching: S1 = S ∩ {x : xj ≤ ⌊¯ xj⌋} S2 = S ∩ {x : xj ≥ ⌈¯ xj⌉} thus the current optimum is not feasible either in S1 or in S2. Which variable to choose? Eg: Most fractional variable arg maxj∈C min{fj, 1 − fj}

17

slide-38
SLIDE 38

Branch and Bound Preprocessing

B&B Components

Bounding:

  • 1. LP relaxation
  • 2. Lagrangian relaxation
  • 3. Combinatorial relaxation
  • 4. Duality

Branching: S1 = S ∩ {x : xj ≤ ⌊¯ xj⌋} S2 = S ∩ {x : xj ≥ ⌈¯ xj⌉} thus the current optimum is not feasible either in S1 or in S2. Which variable to choose? Eg: Most fractional variable arg maxj∈C min{fj, 1 − fj} Choosing Node for Examination from the list of active (or open):

  • Depth First Search (a good primal sol. is good for pruning + easier to reoptimize by just

adding a new constraint)

  • Best Bound First: (eg. largest upper: zs = maxk zk
  • r largest lower - to die fast)
  • Mixed strategies

17

slide-39
SLIDE 39

Branch and Bound Preprocessing

Reoptimizing: dual simplex Updating the Incumbent: when new best feasible solution is found: z = max{z, 4} Store the active nodes: bounds + optimal basis (remember the revised simplex!)

18

slide-40
SLIDE 40

Branch and Bound Preprocessing

Enhancements

  • Preprocessor: constraint/problem/structure specific

tightening bounds redundant constraints variable fixing: eg: max{cTx : Ax ≤ b, l ≤ x ≤ u} fix xj = lj if cj < 0 and aij > 0 for all i fix xj = uj if cj > 0 and aij < 0 for all i

19

slide-41
SLIDE 41

Branch and Bound Preprocessing

Enhancements

  • Preprocessor: constraint/problem/structure specific

tightening bounds redundant constraints variable fixing: eg: max{cTx : Ax ≤ b, l ≤ x ≤ u} fix xj = lj if cj < 0 and aij > 0 for all i fix xj = uj if cj > 0 and aij < 0 for all i

  • Priorities: establish the next variable to branch

19

slide-42
SLIDE 42

Branch and Bound Preprocessing

Enhancements

  • Preprocessor: constraint/problem/structure specific

tightening bounds redundant constraints variable fixing: eg: max{cTx : Ax ≤ b, l ≤ x ≤ u} fix xj = lj if cj < 0 and aij > 0 for all i fix xj = uj if cj > 0 and aij < 0 for all i

  • Priorities: establish the next variable to branch
  • Special ordered sets SOS (or generalized upper bound GUB)

k

  • j=1

xj = 1 xj ∈ {0, 1} instead of: S0 = S ∩ {x : xj = 0} and S1 = S ∩ {x : xj = 1} {x : xj = 0} leaves k − 1 possibilities {x : xj = 1} leaves only 1 possibility hence tree unbalanced here: S1 = S ∩ {x : xji = 0, i = 1..r} and S2 = S ∩ {x : xji = 0, i = r + 1, .., k}, r = min{t : t

i=1 x∗ ji ≥ 1 2}

19

slide-43
SLIDE 43

Branch and Bound Preprocessing

  • Cutoff value: a user-defined primal bound to pass to the system.
  • Simplex strategies: simplex is good for reoptimizing but for large models interior points

methods may work best.

20

slide-44
SLIDE 44

Branch and Bound Preprocessing

  • Cutoff value: a user-defined primal bound to pass to the system.
  • Simplex strategies: simplex is good for reoptimizing but for large models interior points

methods may work best.

  • Strong branching: extra work to decide more accurately on which variable to branch:
  • 1. choose a set C of fractional variables
  • 2. reoptimize for each of them (in case for limited iterations)
  • 3. z↓

j , z↑ j (dual bound of down and up branch)

j∗ = arg min

j∈C max{z↓ j , z↑ j }

ie, choose variable with largest decrease of dual bound, eg UB for max

20

slide-45
SLIDE 45

Branch and Bound Preprocessing

There are four common reasons because integer programs can require a significant amount of solution time:

  • 1. There is lack of node throughput due to troublesome linear programming node solves.
  • 2. There is lack of progress in the best integer solution, i.e., the upper bound.
  • 3. There is lack of progress in the best lower bound.
  • 4. There is insufficient node throughput due to numerical instability in the problem data or

excessive memory usage.

21

slide-46
SLIDE 46

Branch and Bound Preprocessing

There are four common reasons because integer programs can require a significant amount of solution time:

  • 1. There is lack of node throughput due to troublesome linear programming node solves.
  • 2. There is lack of progress in the best integer solution, i.e., the upper bound.
  • 3. There is lack of progress in the best lower bound.
  • 4. There is insufficient node throughput due to numerical instability in the problem data or

excessive memory usage. For 2) or 3) the gap best feasible-dual bound is large: gap = |Primal bound − Dual bound| Primal bound + ǫ · 100

21

slide-47
SLIDE 47

Branch and Bound Preprocessing

  • heuristics for finding feasible solutions (generally NP-complete problem)
  • find better lower bounds if they are weak: addition of cuts, stronger formulation, branch and

cut

  • Branch and cut: a B&B algorithm with cut generation at all nodes of the tree. (instead of

reoptimizing, do as much work as possible to tighten) Cut pool: stores all cuts centrally Store for active node: bounds, basis, pointers to constraints in the cut pool that apply at the node

22

slide-48
SLIDE 48

Branch and Bound Preprocessing

Relative Optimality Gap

In CPLEX: gap = |best dual bound − best integer| |best integer + 10−11| In SCIP and MIPLIB standard: gap = pb − db inf{|z|, z ∈ [db, pb]} · 100 for a minimization problem (if pb ≥ 0 and db ≥ 0 then pb−db

db

) if db = pb = 0 then gap = 0 if no feasible sol found or db ≤ 0 ≤ pb then the gap is not computed.

23

slide-49
SLIDE 49

Branch and Bound Preprocessing

Last standard avoids problem of non decreasing gap if we go through zero

3186 2520

  • 666.6217

4096 956.6330

  • 667.2010

1313338 169.74% 3226 2560

  • 666.6205

4097 956.6330

  • 667.2010

1323797 169.74% 3266 2600

  • 666.6201

4095 956.6330

  • 667.2010

1335602 169.74% Elapsed real time = 2801.61 sec. (tree size = 77.54 MB, solutions = 2) * 3324+ 2656

  • 125.5775
  • 667.2010

1363079 431.31% 3334 2668

  • 666.5811

4052

  • 125.5775
  • 667.2010

1370748 431.31% 3380 2714

  • 666.5799

4017

  • 125.5775
  • 667.2010

1388391 431.31% 3422 2756

  • 666.5791

4011

  • 125.5775
  • 667.2010

1403440 431.31%

24

slide-50
SLIDE 50

Branch and Bound Preprocessing

Advanced Techniques

We did not treat:

  • LP: Dantzig Wolfe decomposition
  • LP: Column generation
  • LP: Delayed column generation
  • IP: Branch and Price
  • LP: Benders decompositions
  • LP: Lagrangian relaxation

25

slide-51
SLIDE 51

Branch and Bound Preprocessing

Outline

  • 1. Branch and Bound
  • 2. Preprocessing

27

slide-52
SLIDE 52

Branch and Bound Preprocessing

Preprocessing rules

Consider S = {x : a0x0 + n

j=1 ajxj ≤ b, lj ≤ xj ≤ uj, j = 0..n}

  • Bounds on variables.

If a0 > 0 then: x0 ≤  b −

  • j:aj>0

ajlj −

  • j:aj<0

ajuj   /a0 and if a0 < 0 then x0 ≥  b −

  • j:aj>0

ajlj −

  • j:aj<0

ajuj   /a0

28

slide-53
SLIDE 53

Branch and Bound Preprocessing

Preprocessing rules

Consider S = {x : a0x0 + n

j=1 ajxj ≤ b, lj ≤ xj ≤ uj, j = 0..n}

  • Bounds on variables.

If a0 > 0 then: x0 ≤  b −

  • j:aj>0

ajlj −

  • j:aj<0

ajuj   /a0 and if a0 < 0 then x0 ≥  b −

  • j:aj>0

ajlj −

  • j:aj<0

ajuj   /a0

  • Redundancy. The constraint n

j=0 ajxj ≤ b is redundant if

  • j:aj>0

ajuj +

  • j:aj<0

ajlj ≤ b

28

slide-54
SLIDE 54

Branch and Bound Preprocessing

  • Infeasibility: S = ∅ if (swapping lower and upper bounds from previous case)
  • j:aj>0

ajlj +

  • j:aj<0

ajuj > b

29

slide-55
SLIDE 55

Branch and Bound Preprocessing

  • Infeasibility: S = ∅ if (swapping lower and upper bounds from previous case)
  • j:aj>0

ajlj +

  • j:aj<0

ajuj > b

  • Variable fixing. For a max problem in the form

max{cTx : Ax ≤ b, l ≤ x ≤ u} if ∀i = 1..m : aij ≥ 0, cj < 0 then fix xj = lj if ∀i = 1..m : aij < 0, cj > 0 then fix xj = uj

29

slide-56
SLIDE 56

Branch and Bound Preprocessing

  • Infeasibility: S = ∅ if (swapping lower and upper bounds from previous case)
  • j:aj>0

ajlj +

  • j:aj<0

ajuj > b

  • Variable fixing. For a max problem in the form

max{cTx : Ax ≤ b, l ≤ x ≤ u} if ∀i = 1..m : aij ≥ 0, cj < 0 then fix xj = lj if ∀i = 1..m : aij < 0, cj > 0 then fix xj = uj

  • Integer variables:

⌈lj⌉ ≤ xj ≤ ⌊uj⌋

29

slide-57
SLIDE 57

Branch and Bound Preprocessing

  • Infeasibility: S = ∅ if (swapping lower and upper bounds from previous case)
  • j:aj>0

ajlj +

  • j:aj<0

ajuj > b

  • Variable fixing. For a max problem in the form

max{cTx : Ax ≤ b, l ≤ x ≤ u} if ∀i = 1..m : aij ≥ 0, cj < 0 then fix xj = lj if ∀i = 1..m : aij < 0, cj > 0 then fix xj = uj

  • Integer variables:

⌈lj⌉ ≤ xj ≤ ⌊uj⌋

  • Binary variables. Probing: add a constraint, eg, x2 = 0 and check what happens

29

slide-58
SLIDE 58

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 R3 : x1 + x2 + x3 ≤ 6 0 ≤ x1 ≤ 3 0 ≤ x2 ≤ 1 x3 ≥ 1

30

slide-59
SLIDE 59

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 R3 : x1 + x2 + x3 ≤ 6 0 ≤ x1 ≤ 3 0 ≤ x2 ≤ 1 x3 ≥ 1

R1 :5x1 ≤ 15 + 2x2 − 8x3 ≤ 15 + 2 ·

u2

  • 1

−8 ·

l3

  • 1

= 9 x1 ≤ 9/5 8x3 ≤ 15 + 2x2 − 5x1 ≤ 15 + 2 · 1 − 5 · 0 = 17 x3 ≤ 17/8 2x2 ≥ 5x1 + 8x3 − 15 ≥ 5 · 0 + 8 · 1 = −7 x2 ≥ −7/2, x2 ≥ 0 R2 :8x1 ≥ 9 − 3x2 + x3 ≥ 9 − 3 + 1 = 7 x1 ≥ 7/8 R1 :8x3 ≥ 15 + 2x2 − 5x1 ≤ 15 + 2 − 5 · 7/8 = 101/8 x3 ≤ 101/64 R3 : x1 + x2 + x3 ≤ 9/5 + 1 + 101/64 < 6 Hence R3 is redundant

slide-60
SLIDE 60

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 R3 : x1 + x2 + x3 ≤ 6 0 ≤ x1 ≤ 3 0 ≤ x2 ≤ 1 x3 ≥ 1

R1 :5x1 ≤ 15 + 2x2 − 8x3 ≤ 15 + 2 ·

u2

  • 1

−8 ·

l3

  • 1

= 9 x1 ≤ 9/5 8x3 ≤ 15 + 2x2 − 5x1 ≤ 15 + 2 · 1 − 5 · 0 = 17 x3 ≤ 17/8 2x2 ≥ 5x1 + 8x3 − 15 ≥ 5 · 0 + 8 · 1 = −7 x2 ≥ −7/2, x2 ≥ 0

30

slide-61
SLIDE 61

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 R3 : x1 + x2 + x3 ≤ 6 0 ≤ x1 ≤ 3 0 ≤ x2 ≤ 1 x3 ≥ 1

R1 :5x1 ≤ 15 + 2x2 − 8x3 ≤ 15 + 2 ·

u2

  • 1

−8 ·

l3

  • 1

= 9 x1 ≤ 9/5 8x3 ≤ 15 + 2x2 − 5x1 ≤ 15 + 2 · 1 − 5 · 0 = 17 x3 ≤ 17/8 2x2 ≥ 5x1 + 8x3 − 15 ≥ 5 · 0 + 8 · 1 = −7 x2 ≥ −7/2, x2 ≥ 0 R2 :8x1 ≥ 9 − 3x2 + x3 ≥ 9 − 3 + 1 = 7 x1 ≥ 7/8 R1 :8x3 ≥ 15 + 2x2 − 5x1 ≤ 15 + 2 − 5 · 7/8 = 101/8 x3 ≤ 101/64

30

slide-62
SLIDE 62

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 R3 : x1 + x2 + x3 ≤ 6 0 ≤ x1 ≤ 3 0 ≤ x2 ≤ 1 x3 ≥ 1

R1 :5x1 ≤ 15 + 2x2 − 8x3 ≤ 15 + 2 ·

u2

  • 1

−8 ·

l3

  • 1

= 9 x1 ≤ 9/5 8x3 ≤ 15 + 2x2 − 5x1 ≤ 15 + 2 · 1 − 5 · 0 = 17 x3 ≤ 17/8 2x2 ≥ 5x1 + 8x3 − 15 ≥ 5 · 0 + 8 · 1 = −7 x2 ≥ −7/2, x2 ≥ 0 R2 :8x1 ≥ 9 − 3x2 + x3 ≥ 9 − 3 + 1 = 7 x1 ≥ 7/8 R1 :8x3 ≥ 15 + 2x2 − 5x1 ≤ 15 + 2 − 5 · 7/8 = 101/8 x3 ≤ 101/64 R3 : x1 + x2 + x3 ≤ 9/5 + 1 + 101/64 < 6 Hence R3 is redundant

30

slide-63
SLIDE 63

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 7/8 ≤ x1 ≤ 9/5 0 ≤ x2 ≤ 1 1 ≤ x3 ≤ 101/64

31

slide-64
SLIDE 64

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 7/8 ≤ x1 ≤ 9/5 0 ≤ x2 ≤ 1 1 ≤ x3 ≤ 101/64 Increasing x2 makes constraints satisfied x2 = 1 Decreasing x3 makes constraints satisfied x3 = 1

31

slide-65
SLIDE 65

Branch and Bound Preprocessing

Example

max 2x1 + x2 − x3 R1 : 5x1 − 2x2 + 8x3 ≤ 15 R2 : 8x1 + 3x2 − x3 ≥ 9 7/8 ≤ x1 ≤ 9/5 0 ≤ x2 ≤ 1 1 ≤ x3 ≤ 101/64 Increasing x2 makes constraints satisfied x2 = 1 Decreasing x3 makes constraints satisfied x3 = 1 We are left with: max{2x1 : 7/8 ≤ x1 ≤ 9/5}

31

slide-66
SLIDE 66

Branch and Bound Preprocessing

Preprocessing for Set Covering/Partitioning

  • 1. if eT

i A = 0 then the ith row can never be satisfied

0 0 . . . 1 . . . 0         0 . . . 0 . . .         =          . . .         

32

slide-67
SLIDE 67

Branch and Bound Preprocessing

Preprocessing for Set Covering/Partitioning

  • 1. if eT

i A = 0 then the ith row can never be satisfied

0 0 . . . 1 . . . 0         0 . . . 0 . . .         =          . . .         

  • 2. if eT

i A = ek then xk = 1 in every feasible solution

0 0 . . . 1 . . . 0         . . . 1 . . .         =           . . . 1 . . .          

32

slide-68
SLIDE 68

Branch and Bound Preprocessing

Preprocessing for Set Covering/Partitioning

  • 1. if eT

i A = 0 then the ith row can never be satisfied

0 0 . . . 1 . . . 0         0 . . . 0 . . .         =          . . .         

  • 2. if eT

i A = ek then xk = 1 in every feasible solution

0 0 . . . 1 . . . 0         . . . 1 . . .         =           . . . 1 . . .           In SPP can remove all rows t with atk = 1 and set xj = 0 (ie, remove cols) for all cols that cover t

32

slide-69
SLIDE 69
  • 3. if eT

t A ≥ eT p A then we can remove row t, row p dominates row t (by covering p we cover t)

        t 1 1 1 p 1 1        

slide-70
SLIDE 70
  • 3. if eT

t A ≥ eT p A then we can remove row t, row p dominates row t (by covering p we cover t)

        t 1 1 1 p 1 1         In SPP we can remove all cols j: atj = 1, apj = 0

  • 4. if

j∈S Aej = Aek and j∈S cj ≤ ck then we can cover the rows by Aek more cheaply with S

and set xk = 0 (Note, we cannot remove S if

j∈S cj ≥ ck)

        1 1 1 1 1 1 0 0 0 1 1 0 0 0        

slide-71
SLIDE 71

Branch and Bound Preprocessing

Summary

  • 1. Branch and Bound
  • 2. Preprocessing

34