Integer Programming Example (Branch and Bound)
As mentioned in the previous section, integer problem cannot be solved by the simplex method. However, it can be efficiently solved by an extension of it, so called Branch and bound (B&B) method. Since the objective value of a linear problem is the upper bound of integer problem, we can structure branching procedure.
- Ignore integer requirement and solve the problem as an LP
- Attempt to solve any fractional solution variable through branch integer value below & above
- Four instances are possibly encountered after a branch
- Feasible IP solution identified, best bound
- Fractional result
- Problem infeasible (fathom)
- Feasible IP, but worse bound (fathom)
- Continue with all branches are fathomed, with only best feasible IP node remaining
Example
Let’s take a look of procedure of B&B method with an example.
s.t.
<center></center> <center></center> <center> and integer </center>
Like previous example, this problem is integer problem. But to apply B&B method, we must relax integer restriction.
s.t.
<center></center> <center></center> <center></center>
As this problem is a maximization problem, the objective value of the linear problem is always the upper bound of the objective value of the integer programming problem. If we solve this problem, solution is:
<center>, , </center>
And following figure is a graphic depiction of solution space. White area is the feasible area.

Since the coefficient in the object function are integral, must be integral and this implies the upper bound will be 41: .
We have solution such that and . Both variables must be integer in the optimal solution, and we can divide the feasible area to try to make them integer. For example, or as it should be integer. Likewise, or . For now, we will divide the feasible area using .

We can describe B&B procedure in an enumeration tree. The tree is branching by new constraints for . Constraints are joined to existing constraints. So for is joined the constraints set of ,
s.t.
<center></center> <center></center> <center></center> <center></center>
The strategy of B&B method is obvious: Simply treat each subdivision as we did original problem. Consider first. If we solve this problem with given constraints, solution is , , . Since is not an integer, we need to divide it more, into the regions with and with .
In however, it is infeasible, so this branch no longer needs to be considered.
Let’s check . Note that has constraints from , and also additionally and .
If we solve this problem, solution is , , . Since is not integer, we should branch this solution with (), and (). Now we have three branches to be considered, namely , , . In practice, several heuristics are utilized to select a branch to be solved first for efficient solution process, but for here, we will just pick up .
In , we can get the optimal solution such that , , and . Now finally we have a solution that satisfies the original integer constraints. As it is not possible to get better solution from this branch, there is no point to make subdivision from this branch. From the solution of , we have the lower bound for the original problem, so now we have bounds . It gets closer, but we still have branches to examine.
In , the only solution is , , . Now we have better solution, and the bounds is . We might stop here, as possible integer objective values are 40 and 41, but just in case we get a better solution (41) in , let’s finish the job.
In , our solution is , , . This is inferior solution to , so the optimal solution for the original integer programming is , , .

Conclusion
As you can see, solving a branch and bound problem requires the repeated application of the simplex method, with additional constraints to maintain the integer requirement. In practice, we never solve problems like these by hand; they are much too complex. In fact, once the problems become sufficiently difficult, it may not be feasible to find an optimal solution using the Branch and Bound approach. In those cases a heuristic solution method is applied.