Initialization
Z* = −∞
bounding step, fathoming step, and optimality test
If not fathomed -> subproblem
-> iteration
Iteration
1 Branching
2 Bounding
3 Fathoming
Fathoming
Test 1: Z ≤ Z∗ (or ≥ Z∗ if min problem)
Test 2: no feasible solutions
Test 3: optimal solution for its LP relaxation is integer
If this solution is better than the incumbent, it becomes the new incumbent -> test 1 is reapplied to all unfathomed
subproblems
Optimality test
Stop when there are no remaining subproblems; the current incumbent is optimal
Otherwise, return to perform another iteration.
B&B changes for MIP
Node selection rules
1 Depth-first search
2 Breadth-first search
3 Best-bound search
4 Combinations of the previous ones
Depth-first search
select a child of the preceding node after branching and backtracks as few nodes as possible after pruning a node
Breadth-first search
select nodes that are closest to the top of the tree
Best-bound search:
select the node with the best lower bound
Heuristic choice of the rule
Node selection rule
1 Lexicographical order
2 Most fractional: select the variable whose fractional part is
farthest from being integer
3 Sophisticated rules: detecting the impact of the branching variable on the lower bound values
Duality gap
when enumeration is unfinished, the duality gap measures the maximum relative deviation from optimality of the best feasible solution found
Reformulation
Convex hull
is the tightest valid formulation or valid LP relaxation for X
- All extreme points of conv(X) belong to X, all extreme optimal solutions to the LR belong to X
- solving the LR → extreme optimal solution to LR (which is also an optimal solution to MIP)
Valid inequalities
A VI for the feasible set X of MIP is a constraint or inequality satisfied by all points in X
Facet-defining valid inequality
… for X is a valid inequality that is necessary in a description of the polyhedron conv(X)
Extended reformulation
An extended reformulation for the feasible set X of a MIP is a formulation (defined by linear constraints) involving new (and usually more) variables.