Disjunctive Constraints via Big-M
Reformulate logical 'either-or' constraints as linear inequalities using a binary indicator variable and Big-M constants. Covers all sign combinations (\leq and \geq) and selection of the tightest Big-M value.
Step 1 of 157%
Tutorial
Disjunctions and the Big-M Reformulation
A disjunctive constraint requires that at least one of two linear constraints hold. A pure linear program only expresses conjunctions (every constraint must hold simultaneously), so a disjunction like
cannot be encoded directly. We introduce a binary indicator and large constants that relax whichever constraint is deactivated:
The indicator selects which constraint is active:
- When : the first reduces to (active); the second becomes , which is redundant for large enough.
- When : the first is relaxed to ; the second, , is enforced.
In either case, at least one of the original constraints holds.
For example, to enforce OR , we write