2. Branch and Bound is a general search method.
Starting by considering the root problem (the original
problem with the complete feasible region), the lower-
bounding and upper-bounding procedures are applied
to the root problem.
If the bounds match, then an optimal solution has been
found and the procedure terminates.
Introduction
3. Otherwise, the feasible region is divided into two
or more regions, these subproblems partition the
feasible region.
The algorithm is applied recursively to the
subproblems. If an optimal solution is found to a
subproblem, it is a feasible solution to the full
problem, but not necessarily globally optimal.
Introduction
4. If the lower bound for a node exceeds the best known
feasible solution, no globally optimal solution can exist in
the subspace of the feasible region represented by the
node. Therefore, the node can be removed from
consideration.
The search proceeds until all nodes have been solved or
pruned, or until some specified threshold is met between
the best solution found and the lower bounds on all
unsolved subproblems.
Introduction
5. Algorithm for LP-Based
Branch and Bound
Max z =cj xj
s.t. aij xj ≤ bi i = 1,…,m
xj ≥ 0 j = 1,…, n
Lj ≤ xj ≤ Uj j = 1,…, n
xj are integers j = 1,…, n
6. Algorithm for LP-Based
Branch and Bound
Step 0: Initialization. Let the master list initially
include only the original linear program,
let t=1, and z1 = -∞.
Step 1: Branching. Stop if the master list is
empty. Otherwise select a program from
the master list.
7. Algorithm for LP-Based
Branch and Bound
Step 2: Relaxation. Solve the problem taken from the master
list. If the problem has no feasible solution, or if its
objective function value z is less than zt (this branch
has been fathomed), let zt+1 = zt and go to Step 1.
Otherwise go to Step 3.
Step 3: If the solution to the solved LP satisfies the integer
constraints, then store the solution and let zt+1 equal
the objective function value for the solution. Since
this branch has been fathomed, go to Step 1. If the
integer condition is not satisfied, go to Step 4.
8. Algorithm for LP-Based
Branch and Bound
Step 4: Separation. Select any variable xj whose value bj
in the current solution does not satisfy the
integer requirement. Add two problems to the
master list; these problems are identical to the
one just solved except that in one we add:
xj ≥ [bj ]+1
and in the other we add:
xj ≤ [bj ]
Let zt+1 = zt and go to Step 1.
9. Example
Max Z = 21x1+11x2
s.t. 7x1+4x2 ≤13
x1 ≥0, x2 ≥0
x1 ,x2 are integers
10. Example (cont.)
Step 0: Set Z1 = -. Create Problem 1.
Step 1: Remove Problem 1
from the master list.
Step 2: Solve Problem 1.
Step 3: Branch on X1, since
X1 not integer-valued.
Step 4: Create Problem 2 & 3.
Place on master list.
11. Example (cont.)
Step 0: Set Z2 = -.
Step 1: Remove Problem 2
from the master list.
Step 2: Solve Problem 2.
Step 3: No feasible solution.
Stop.
12. Example (cont.)
Step 0: Set Z3 = -
Step 1: Remove Problem 3
from the master list
Step 2: Solve Problem 3
Step 3: Branch on X2, since
X2 not integer-valued
Step 4: Create Problem 4 & 5
place on master list
13. Example (cont.)
Step 0: Set Z4 = -.
Step 1: Remove Problem 4
from the master list.
Step 2: Solve Problem 4.
Step 3: Solution satisfies integer
constraint. Record the
solution and stop!
15. Branch and Bound Codes in Matlab
Available Matlab code for Branch and Bound algorithm – BNB on
the following ftp site:
ftp://ftp.mathworks.com/pub/contrib/v5/optim/
The algorithm detects 0-1 variables with constrains like:
x(a)+x(b)+x(c)+..=1 and adapts the branching to it.
To function BNB, you need:
• Matlab 5.3 or newer
• Optimization Toolbox 2.0
• The Courier-LD font
16. Conclusion
Although a number of algorithms have been proposed
for the integer linear programming problem, the
branch-and-bound technique has proven to be
reasonably efficient on practical problems, and it has
the added advantage that it solves continuous linear
programs as sub problems.
The technique is also used in a lot of software in
global optimization.