Branch and Bound on Small Mixed-Integer Programs
Extends branch and bound from binary integer programs to mixed-integer programs (MIPs), where integer-required variables may take any nonnegative integer value and other variables may be continuous. Covers branching with floor/ceil constraints, pruning by infeasibility, integrality, and bound, and tracing the full algorithm on small instances.
Tutorial
Introduction
A mixed-integer program (MIP) is an optimization problem in which some variables must take integer values while others may be continuous. Unlike a binary IP, where integer variables are restricted to , the integer variables in a general MIP can take any nonnegative integer value:
To solve a MIP via branch and bound, we first solve its LP relaxation — the LP obtained by dropping every integrality constraint. If the LP optimum is already integer-feasible in every integer-required variable, we are done. Otherwise, we pick an integer-required variable whose LP value is fractional and split the problem into two subproblems:
The interval is forbidden in both children, yet every integer-feasible point of the original MIP still lies in one of them.
For example, if the LP relaxation gives for an integer-required variable, then and , so the children add and , respectively.
When several integer-required variables are fractional in the LP, a standard rule is to branch on the most fractional one — the variable whose fractional part is closest to .