21.08.2013 Views

(2/1) PDF - WINFOR

(2/1) PDF - WINFOR

(2/1) PDF - WINFOR

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

8.3 Branch and Bound<br />

In what follows, we consider a second technique optimally solving<br />

general integer linear programs. Given an integer linear program<br />

denoted as M 0<br />

( ) ( )<br />

0 0<br />

M Min z x s. t. x ∈ P<br />

We consider a lower bound LM0 to M0 that is obtained from a<br />

relaxation and has a larger solution space LP0⊇P0 . We solve the<br />

relaxation to optimality and obtain its optimal solution x0 relaxation to optimality and obtain its optimal solution x<br />

LM = Min z( x) s. t. x ∈ LP<br />

0 0<br />

For example, LM 0 is the optimal objective function value of the LPrelaxation<br />

to M 0<br />

If x 0 ∈P 0 , then the problem M 0 is optimally solved.<br />

Otherwise: Branching (see next slide)<br />

Business Computing and Operations Research 647<br />

Branching<br />

We partition the solution space P 0 by some branching rule and yield<br />

k+1 subproblems M 00 …M 0k<br />

∪<br />

0 k 0i 0i 0 j<br />

, 0,..., : :<br />

i=<br />

1<br />

P = P ∧ ∀ i j = k i ≠ j P ∩ P = ∅<br />

( ) ( ) ( ) ( )<br />

00 01 0k 0k<br />

M Min z x s. t. x ∈ P ... M Min z x s. t. x ∈ P<br />

For example if P0 is the LP-relaxation, we choose a variable x 0 For example if P that is<br />

0 is the LP-relaxation, we choose a variable x 0<br />

j that is<br />

not integer and yield two subproblems with<br />

{ 0 j ⎡ j ⎤} { 0<br />

j ⎢ j ⎥}<br />

00 0 0 01 0 0<br />

P = x ≥ x ∈ P ∧ x ≥ ⎢x ⎥ P = x ≥ x ∈ P ∧ x ≤ ⎣x ⎦<br />

Business Computing and Operations Research 648


Enumeration tree obtained from Branching<br />

Applying the branching rule consecutively, we derive a<br />

solution tree<br />

M 0<br />

M 00 M 01<br />

M 000 M 001 M 002<br />

Some solutions of the subproblems may be integer.<br />

We stop if the solution tree is explored entirely and thus,<br />

the best known integer solution is optimal to M 0<br />

Business Computing and Operations Research 649<br />

Size of the enumeration tree<br />

Hmmm… Annoying is that its<br />

size grows exponentially!<br />

This can take ages to<br />

compute…<br />

But we can reduce<br />

the size by<br />

bounding…<br />

bounding… !<br />

Business Computing and Operations Research 650


Bounding<br />

There is always a global upper bound UM to the integer linear program<br />

M 0 . Either UM=∞ or UM is derived from a feasible solution to M 0<br />

We calculate a lower bound LM 0i , which is easy to calculate, for each<br />

subproblem M 0i and LM 0i has a solution space LP 0i ⊇P 0i ∀i=1,…,k.<br />

A subproblem M0i does not need to be considered any more (i.e., it is<br />

pruned) if one of the following pruning criterions hold:<br />

0i<br />

a) and the optimal solution x0i of LM0i is feasible to M0 a) LM < UM and the optimal solution x of LM is feasible to M : We<br />

found an improved upper bound to M0 and we remember this<br />

solution UM:= LM0i .<br />

b) : The optimal solution of the subproblem M0i LM < UM<br />

0i<br />

LM ≥ UM<br />

and all<br />

integer solutions derived from it cannot be better than the best<br />

known feasible solution with UM.<br />

0i<br />

c) : There exists no feasible solution to LM0i and none to M0i LP = ∅<br />

We stop if the solution tree is explored and thus, UM is optimal to M 0<br />

( 0 )<br />

M Minimize − x − 2 ⋅ x<br />

s.t. 2 ⋅ x + 2 ⋅ x ≤ 7<br />

1 2<br />

1 2<br />

−2 ⋅ x + 2 ⋅ x ≤ 1<br />

1 2<br />

−2 ⋅ x ≤ −1<br />

x ,x<br />

2<br />

≥ 0<br />

x ,x ∈Z<br />

1 2<br />

Business Computing and Operations Research 651<br />

1 2<br />

Example<br />

We commence with UM=∞ and with the LP-relaxation LM0 0<br />

7<br />

1<br />

−1<br />

−1 2<br />

−2<br />

0<br />

−2<br />

2<br />

2<br />

−2<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

11<br />

0 2<br />

3<br />

0<br />

⇒ ... ⇒<br />

2<br />

0 3<br />

1<br />

2<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

3<br />

4<br />

1<br />

4<br />

1<br />

2<br />

1<br />

4<br />

1<br />

4<br />

− 1<br />

4<br />

1<br />

2<br />

1<br />

4<br />

0<br />

0<br />

1<br />

0<br />

Business Computing and Operations Research 652


Consequences<br />

Obviously, -11/2 is a lower bound for the optimal solution<br />

value of M 0<br />

Since the solution is unfortunately not integer, we branch<br />

and conduct a case statement. Either x 1≤1 or x 1≥2<br />

Starting from the original set of feasible solutions<br />

{ ( 1 2 ) ≥0<br />

2 1 2 2 7 2 1 2 2 1 2 2 1 }<br />

0 2<br />

P = x ,x ∈ IR | 2 ⋅ x + 2 ⋅ x ≤ 7 ∧ − −2 ⋅ x + 2 ⋅ x ≤ 1 ∧ 2 ⋅ x ≤ − −1<br />

the simple branching step yields two subproblems<br />

{ ( 1 2 ) ≥0<br />

2 1 2 2 7 2 1 2 2 1 2 2 1 1 1}<br />

( ) 2 2 7 2 2 1 2 1 2<br />

00 2<br />

P x ,x IR | x x x x x x<br />

= ∈ ⋅ + ⋅ ≤ ∧ − ⋅ + ⋅ ≤ ∧ ⋅ ≤ − ∧ ≤ ∧<br />

{ 1 2 ≥0<br />

1 2 1 2 2 1 }<br />

= ∈ ⋅ + ⋅ ≤ ∧ − ⋅ + ⋅ ≤ ∧ ⋅ ≤ − ∧ ≥<br />

01 2<br />

P x ,x IR | x x x x x x<br />

Business Computing and Operations Research 653<br />

Resulting problems<br />

Consequently, we obtain the tableaus<br />

M M<br />

00 01<br />

11<br />

2<br />

0 0 3<br />

4<br />

1<br />

4<br />

0 0 11<br />

2<br />

0 0 3<br />

4<br />

1<br />

4<br />

0 0<br />

3<br />

2<br />

1 0 1<br />

4<br />

− 1<br />

4<br />

0 0 3<br />

2<br />

1 0 1<br />

4<br />

− 1<br />

4<br />

0 0<br />

3 0 0 1<br />

2<br />

1<br />

2<br />

1 0 3 0 0 1<br />

2<br />

1<br />

2<br />

1 0<br />

2 0 1 1<br />

4<br />

1<br />

2<br />

0 0 2 0 1 1<br />

4<br />

1<br />

2<br />

0 0<br />

1 1 0 0 0 0 1 2 1 0 0 0 0 −1<br />

Business Computing and Operations Research 654


Transformation of the tableaus<br />

In order to directly conduct the dual simplex, we<br />

need to transform the problem<br />

Specifically, we subtract the first row from the<br />

fourth one or vice versa<br />

Thus, we obtain<br />

11<br />

2<br />

0 0 3<br />

4<br />

1<br />

4<br />

0 0 11<br />

2<br />

0 0 3<br />

4<br />

1<br />

4<br />

0 0<br />

3<br />

2<br />

1 0 1<br />

4<br />

− 1<br />

4<br />

0 0 3<br />

2<br />

1 0 1<br />

4<br />

− 1<br />

4<br />

0 0<br />

3 0 0 1<br />

2<br />

1<br />

2<br />

1 0 3 0 0 1<br />

2<br />

1<br />

2<br />

1 0<br />

2 0 1 1<br />

4<br />

1<br />

2<br />

0 0 2 0 1 1<br />

4<br />

1<br />

2<br />

0 0<br />

− 1<br />

2<br />

0 0 − 1<br />

4<br />

1<br />

4<br />

0 1 − 1<br />

2<br />

0 0 1<br />

4<br />

− 1<br />

4<br />

0 1<br />

Business Computing and Operations Research 655<br />

Finally, it turns out…<br />

11<br />

2<br />

0 0 3<br />

4<br />

1<br />

4<br />

0 0 11<br />

2<br />

0 0 3<br />

4<br />

1<br />

4<br />

0 0<br />

3<br />

2<br />

1 0 1<br />

4<br />

− 1<br />

4<br />

0 0 3<br />

2<br />

1 0 1<br />

4<br />

− 1<br />

4<br />

0 0<br />

3 0 0 1<br />

2<br />

1<br />

2<br />

1 0 3 0 0 1<br />

2<br />

1<br />

2<br />

1 0<br />

2<br />

⎡− 1 ⎤<br />

⎣ 2⎦ 0<br />

0<br />

1<br />

0<br />

1<br />

4<br />

( − 1<br />

4) 1<br />

4<br />

1<br />

4<br />

0<br />

0<br />

0<br />

1<br />

2<br />

⎡− 1 ⎤<br />

⎣ 2⎦ 0<br />

0<br />

1<br />

0<br />

1<br />

4<br />

1<br />

4<br />

1<br />

4<br />

( − 1<br />

4)<br />

0<br />

0<br />

0<br />

1<br />

4 0 0 0 1 0 3 5 0 0 1 0 0 1<br />

1 1 0 0 0 0 1 2 1 0 0 0 0 −1<br />

2 0 0 0 1 1 2 2<br />

3<br />

2<br />

0 1 0 1<br />

2<br />

0 1<br />

2 0 0 1 −1 0 −4<br />

0 0 1 0 1 2<br />

3<br />

2<br />

0 1 1<br />

2<br />

0 0 1<br />

2 0 0 −1 1 0 −4<br />

Business Computing and Operations Research 656


Conclusions<br />

Unfortunately, both solutions are still not integer<br />

Thus, we have to resume with the next branching<br />

step<br />

This time, we obtain altogether four constellations<br />

000 { ( 1 2 ) 2<br />

≥ 0 2 1 2 2 7 2 1 2 2 1 2 2 1 1 1 2 1 }<br />

001 { ( 1 2 ) 2<br />

≥0<br />

2 1 2 2 7 2 1 2 2 1 2 2 1 1 1 2 2}<br />

010 { ( 1 2 ) 2<br />

≥0<br />

2 1 2 2 7 2 1 2 2 1 2 2 1 1 2 2 1}<br />

011<br />

= { ( 1 2 ) ∈<br />

2<br />

≥0<br />

2 ⋅ 1 + 2 ⋅ x2 ≤ 7 ∧ −2 ⋅ x1 + 2 ⋅ x2 ≤ 1∧ 2 ⋅ x2 ≤ −1∧ x1 ≥ 2 ∧ x2<br />

≥ 2}<br />

M = x ,x ∈ IR | ⋅ x + ⋅ x ≤ ∧ − ⋅ x + ⋅ x ≤ ∧ ⋅ x ≤ − ∧ x ≤ ∧ x ≤ ∧<br />

M = x ,x ∈ IR | ⋅ x + ⋅ x ≤ ∧ − ⋅ x + ⋅ x ≤ ∧ ⋅ x ≤ − ∧ x ≤ ∧ x ≥ ∧<br />

M = x ,x ∈ IR | ⋅ x + ⋅ x ≤ ∧ − ⋅ x + ⋅ x ≤ ∧ ⋅ x ≤ − ∧ x ≥ ∧ x ≤ ∧<br />

M x ,x IR | x<br />

M 001 and M 011 are infeasible (case c)<br />

Thus, we resume with M 000 and M 010<br />

Business Computing and Operations Research 657<br />

Resulting problems<br />

M M<br />

000 010<br />

4 0 0 0 1 0 3 0 5 0 0 1 0 0 1 0<br />

1 1 0 0 0 0 1 0 2 1 0 0 0 0 −1<br />

0<br />

2 0 0 0 1 1 2 0 2 0 0 1 0 1 2 0<br />

3<br />

2<br />

0 1 0 1<br />

2<br />

0 1 0 3<br />

2<br />

0 1 1<br />

2<br />

0 0 1 0<br />

2 0 0 1 −1 0 −4 0 2 0 0 −1 1 0 −4<br />

0<br />

1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1<br />

4 0 0 0 1 0<br />

3 0 5 0 0 1 0 0 1 0<br />

1 1 0 0 0 0 1 0 2 1 0 0 0 0 −1<br />

0<br />

2 0 0 0 1 1 2 0 2 0 0 1 0 1 2 0<br />

3<br />

2<br />

0 1 0 1<br />

2<br />

0 1 0 3<br />

2<br />

0 1 1<br />

2<br />

0 0 1 0<br />

2 0 0 1 −1 0 −4 0 2 0 0 −1 1 0 −4<br />

0<br />

( ) ( )<br />

− 1 0 0 0 − 1 0 −1 1 − 1 0 0 − 1 0 0 −1<br />

1<br />

2 2 2 2<br />

Business Computing and Operations Research 658


Resulting problems<br />

4 0 0 0 1 0 3 0 5 0 0 1 0 0 1 0<br />

1 1 0 0 0 0 1 0 2 1 0 0 0 0 −1<br />

0<br />

2 0 0 0 1 1 2 0 2 0 0 1 0 1 2 0<br />

3<br />

2<br />

0 1 0 1<br />

2<br />

0 1 0 3<br />

2<br />

0 1 1<br />

2<br />

0 0 1 0<br />

2 0 0 1 −1 0 −4 0 2 0 0 −1 1 0 −4<br />

0<br />

( ) ( )<br />

⎡− 1 ⎤ 0 0 0 − 1 0 −1 1 ⎡− 1 ⎤ 0 0 − 1 0 0 −1<br />

1<br />

⎣ 2 ⎦ 2 ⎣ 2 ⎦<br />

2<br />

3 0 0 0 0 0 1 2<br />

1 1 0 0 0 0 1 0<br />

1 0 0 0 0 1 0 2<br />

1 0 1 0 0 0 0 1<br />

3 0 0 1 0 0 −2 −2<br />

1 0 0 0 1 0 2 −2<br />

9<br />

2<br />

0 0 1<br />

2<br />

0 0 0 1<br />

5<br />

2<br />

1 0 1<br />

2<br />

0 0 0 −1<br />

1 0 0 0 0 1 0 2<br />

1 0 1 0 0 0 0 1<br />

4 0 0 1 1 0 0 −4<br />

1 0 0 1<br />

2 2<br />

0 0 1 −1<br />

Business Computing and Operations Research 659<br />

M 000 and M 010 – Results<br />

Obviously, the problems are optimally solved<br />

Thus, we obtain an integer solution with objective<br />

function value -3 from M 000 and we set UM:=-3<br />

(case a)<br />

Since the lower bound of the remaining problem<br />

M010 is -9/2, we have to resume with this problem<br />

Here, we obtain the new problems<br />

0100 2<br />

M { ( x 1,x 2 ) IR ≥0<br />

| 2 x1 2 x2 7 2 x1 2 x2 1 2 x2 1 x1 2 x2 1 x1<br />

2}<br />

0101 2<br />

M = { ( x 1,x 2 ) ∈ IR ≥0<br />

| 2 ⋅ x1 + 2 ⋅ x2 ≤ 7 ∧ −2 ⋅ x1 + 2 ⋅ x2 ≤ 1∧ 2 ⋅ x2 ≤ −1∧ x1 ≥ 2 ∧ x2 ≥ 2 ∧ x1<br />

≥<br />

3}<br />

= ∈ ⋅ + ⋅ ≤ ∧ − ⋅ + ⋅ ≤ ∧ ⋅ ≤ − ∧ ≥ ∧ ≤ ∧ ≤ ∧<br />

Business Computing and Operations Research 660


M 010 – Results<br />

M M<br />

0100 0101<br />

9<br />

2<br />

0 0 1<br />

2<br />

0 0 0 1 0 9<br />

2<br />

0 0 1<br />

2<br />

0 0 0 1 0<br />

5<br />

2<br />

1 0 1<br />

2<br />

0 0 0 −1 0 5<br />

2<br />

1 0 1<br />

2<br />

0 0 0 −1<br />

0<br />

1 0 0 0 0 1 0 2 0 1 0 0 0 0 1 0 2 0<br />

1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0<br />

4 0 0 1 1 0 0 −4<br />

0 4 0<br />

0 1 1 0 0 −4<br />

0<br />

1<br />

2<br />

0 0 1<br />

2<br />

0 0 1 −1<br />

0 1<br />

2<br />

0 0 1<br />

2<br />

0 0 1 −1<br />

0<br />

2 1 0 0 0 0 0 0 1 3 1 0 0 0 0 0 0 − 1<br />

9<br />

2<br />

0 0 1<br />

2<br />

0 0 0 1 0 9<br />

2<br />

0 0 1<br />

2<br />

0 0 0 1 0<br />

5<br />

2<br />

1 0 1<br />

2<br />

0 0 0 −1 0 5<br />

2<br />

1 0 1<br />

2<br />

0 0 0 −1<br />

0<br />

1 0 0 0 0 1 0 2 0 1 0 0 0 0 1 0 2 0<br />

1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0<br />

4 0 0 1 1 0 0 −4 0 4 0 0 1 1 0 0 −4<br />

0<br />

1<br />

2<br />

0 0 1<br />

2<br />

0 0 1 −1 0 1<br />

2<br />

0 0 1<br />

2<br />

0 0 1 −1<br />

0<br />

− 1<br />

2<br />

0 0 − 1<br />

2<br />

0 0 0 1 1 − 1<br />

2<br />

0 0 1<br />

2<br />

0 0 0 −1<br />

1<br />

Business Computing and Operations Research 661<br />

And thus, we obtain<br />

9<br />

2<br />

0 0 1<br />

2<br />

0 0 0 1 0 9<br />

2<br />

0 0 1<br />

2<br />

0 0 0 1 0<br />

5<br />

2<br />

1 0 1<br />

2<br />

0 0 0 −1 0 5<br />

2<br />

1 0 1<br />

2<br />

0 0 0 −1<br />

0<br />

1 0 0 0 0 1 0 2 0 1 0 0 0 0 1 0 2 0<br />

1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0<br />

4 0 0 1 1 0 0 −4 0 4 0 0 1 1 0 0 −4<br />

0<br />

1 1 1 1<br />

2<br />

0 0<br />

2<br />

0 0 1 −1 0<br />

2<br />

0 0<br />

2<br />

0 0 1 −1<br />

0<br />

⎡− 1 ⎤ 0 0 ( − 1 ) 0 0 0 1 1 ⎡− 1 ⎤ 0 0 1 0 0 0 ( −1)<br />

1<br />

⎣ 2 ⎦ ( 2 2) ⎣ 2 ⎦ 2<br />

( )<br />

4<br />

2<br />

1<br />

1<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

2<br />

0<br />

2<br />

1<br />

4<br />

1<br />

3<br />

1<br />

0<br />

0<br />

1<br />

0 2<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

1<br />

0<br />

1<br />

1<br />

2<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

0<br />

1<br />

−1<br />

2<br />

1<br />

3 0 0 0 1 0 0 −4 −2 6 0 0 −1 1 0 0 0 −4<br />

0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 −1<br />

1 0 0 1 0 0 0 2 2 1 0 0 1<br />

2<br />

−<br />

2<br />

0 0 0 1 −1<br />

Business Computing and Operations Research 662


M 0100 and M 0101 – Results<br />

We obtained an improved second feasible<br />

solution x T =(2,1) from M 0100 and UM:=-4 (case a)<br />

The other alternative constellation M 0101 still does<br />

not provide any integer solution<br />

However, since the objective function value is -4,<br />

this is a lower bound for all integer solutions<br />

resulting from M0101 (case b)<br />

Thus, we explored the solution tree and stop our<br />

procedure. The optimal solution is x T =(2,1) with<br />

an objective function value of UM=-4<br />

Business Computing and Operations Research 663<br />

Example – Conducted exploration process<br />

00 00<br />

( )<br />

LM = − 4 x = 1,3/ 2<br />

x1 ≤ 1<br />

M 0<br />

0 0<br />

M 00 M 01<br />

( )<br />

LM = − 11/ 2 x = 3/ 2,2 UM = ∞<br />

x1 ≥ 2<br />

01 01<br />

( )<br />

LM = − 5 x = 2,3/ 2<br />

x2 ≤ 1<br />

x2 ≥ 2 x2 ≤ 1<br />

x2 ≥ 2<br />

M000 M001 M010 M011 M M M 010<br />

x = ( 5/ 2,1 )<br />

M<br />

x = 5/ 2,1<br />

LM<br />

x<br />

000<br />

000<br />

=<br />

case a)<br />

000<br />

= −3<br />

( 1,1)<br />

case c)<br />

001<br />

LM < UM ⇒ UM : = −3<br />

P = ∅<br />

LM<br />

010<br />

= −9/<br />

2<br />

x1 ≤ 2<br />

x1 ≥ 3<br />

M 0100 M 0101<br />

LM<br />

x<br />

0100<br />

0100<br />

=<br />

case a)<br />

0100<br />

= −4<br />

( 2,1)<br />

LM < UM ⇒ UM : = −4<br />

Optimal Solution<br />

LM<br />

0101<br />

0101<br />

case b)<br />

0101<br />

= −4<br />

( 3,1/ 2)<br />

case c)<br />

Business Computing and Operations Research 664<br />

x<br />

=<br />

LM ≥<br />

UM<br />

011<br />

P = ∅


Branch and Bound Algorithm<br />

1. Determine an upper bound UM either via a heuristic or set UM:=∞<br />

2. Solve a lower bound LM i of M i and obtain its optimal solution x i<br />

3. If either LM i ≥UM (case b) or P i =Ø (case c) hold, then go to 7.<br />

4. Otherwise (Case b) or c) do not apply): If LM i

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!