Choosing the Tightest Big-M Value

Selecting the smallest valid Big-M constant when modeling on/off activities and conditional constraints with binary indicator variables in integer programming.

Step 1 of 157%

Tutorial

The Big-M Method and Tightness

To switch an activity x0x \geq 0 on or off using a binary indicator y{0,1}y \in \{0, 1\}, we typically write the big-M constraint

xMy.x \leq M \cdot y.

If y=0y = 0, the constraint becomes x0x \leq 0, forcing x=0x = 0. If y=1y = 1, it becomes xMx \leq M, allowing xx to take any value up to MM.

For this formulation to be valid, MM must be at least as large as the largest value xx could attain in the feasible region — otherwise we cut off legitimate solutions.

But MM should not be unnecessarily large either. The tightest big-M is the smallest valid value: the actual maximum that xx can take when y=1y = 1. Tighter values produce a stronger LP relaxation, which dramatically speeds up integer-programming solvers.

In the simplest case, when xx already has an explicit upper bound xUx \leq U, the tightest choice is

M=U.M = U.

For instance, if a generator produces 0x1300 \leq x \leq 130 MW when running, then

x130yx \leq 130\, y

is the tightest big-M formulation of "x=0x = 0 unless the generator is on."

navigate · Enter open · Esc close · ⌘K/Ctrl K toggle