Skip to content
Free public beta until December 4, 2026: every course is open, no card needed. After that, the first chapter of each course stays free and full access is a one-time $39 ($19 for up to 100 founding members chosen for helpful feedback). Your progress is kept. How the beta works

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

  1. 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. 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. 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. 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.