Recipe
Rank designs by goal programming
Use when: you have a stated target for each objective, instead of a preference between the objectives themselves
Goal: every design's total weighted deviation from its stated goals, ranked smallest to largest
Taught in Goal programming
Quick recipe
-
1
For each objective, write down its goal g_i and decide which deviation actually counts against a design.
- a ceiling goal ("do not exceed") — penalize only the overshoot, d_i^+.
- a floor goal ("must be at least") — penalize only the shortfall, d_i^-.
- a goal that must be hit exactly — penalize both d_i^+ and d_i^-.
Why: goal programming only measures the gap that actually matters; penalizing the wrong direction would punish a design for beating its own target.
-
2
For every objective, compute d_i^+=\max(0,f_i(x)-g_i) and d_i^-=\max(0,g_i-f_i(x)). At most one of the two is ever positive.
Example
Goal g=4 (ceiling), candidate scores 6: f(x)-g=2 is an overshoot, so d^+=2 and d^-=0.
Why: these formulas are exactly the algebraic split of f_i(x)-g_i=d_i^+-d_i^- with both variables required to be nonnegative.
-
3
Multiply each penalized deviation by its own weight (w_i^+ or w_i^-) and sum across every objective for that design.
Example
Goal g=10, overshoot three times worse than undershoot (w^+=3, w^-=1). Candidate at 12: d^+=2, penalty =3(2)=6. Candidate at 6: d^-=4, penalty =1(4)=4. The candidate at 6 wins, even though 12 is numerically closer to the goal.
- w_i^+=w_i^- for a goal penalized both ways — the total reduces to the plain distance |f_i(x)-g_i|.
- w_i^+\ne w_i^- — a numerically closer candidate can still lose, since the penalty scales unevenly in each direction.
Why: an asymmetric penalty is often the whole point — overshooting a budget is frequently worse than undershooting it by the same amount.
-
4
Add every objective's weighted deviation together for each design. The smallest total wins; a total of zero means every goal was hit exactly.
Example
Goals g_1=4, g_2=4 (both ceilings, weight 1): X=(3,6) totals 2, Y=(5,3) totals 1, Z=(4,4) totals 0. Z wins outright.
Why: the design with the smallest total deviation is, by construction, the one that comes closest overall to every stated goal at once.
Common mistakes
- Penalizing the wrong direction — for instance charging d_i^- against a "do not exceed" ceiling goal that only cares about overshoot.
- Treating an unreachable goal as a modeling failure, rather than a legitimate target that still ranks designs by closeness.
- Using equal weights when the problem actually states overshoot and undershoot should count differently.
- Computing both d_i^+ and d_i^- as positive for the same design on the same objective — only one can ever apply.