Branching on a Fractional Variable
How to split a branch-and-bound subproblem into two children by adding floor and ceiling constraints on a fractional LP variable, how to select which fractional variable to branch on, and how the resulting LP bounds drive pruning.
Tutorial
Introduction to Branching
Branch and bound solves an integer program by relaxing the integrality constraints, solving the resulting linear program (LP), and splitting the problem when the LP solution is not integer-valued.
Branching on a fractional variable. Suppose the LP relaxation at the current node returns a solution in which some component is not an integer. We split the current subproblem into two children:
- Down branch: add the constraint
- Up branch: add the constraint
This split is valid because every integer value of either satisfies or — no integer can lie strictly between consecutive integers. The fractional point is excluded from both children, which forces the LP relaxations of the children toward integer feasibility.
For example, if we branch into