Aggregated vs. Disaggregated Constraints
In an integer program, a logical link of the form 'if y=0 then every x_i=0' can be written either as a single aggregated big-M constraint or as one disaggregated constraint per variable. The two formulations are equivalent as integer programs but the disaggregated form yields a strictly tighter LP relaxation. This lesson defines both forms, shows why disaggregation cuts off fractional points, and compares the LP-relaxation optimal values produced by each.
Tutorial
Two Ways to Write a Linking Constraint
Many integer programs need to enforce the implication
"if , then ,"
where is an on/off switch and each continuous variable has upper bound . There are two standard ways to model this.
The aggregated form bundles all variables into a single big- constraint:
where is an upper bound on . The smallest valid choice is .
The disaggregated form writes one linking constraint per variable:
When , both forms enforce the same logic: kills every , and allows each to range up to . The two formulations therefore describe the same integer program.
Example. For and :
- Aggregated:
- Disaggregated:
Both express the same on/off behavior under integrality of .