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

Find the allowable range for one LP coefficient, cost or resource

Use when: you know an LP's optimal vertex and need the exact interval ONE cost coefficient, or ONE resource (right-hand-side) value, can move through before today's optimal vertex changes

Goal: the exact interval that coefficient or resource level can move through while today's optimal vertex -- and its shadow price -- stays valid

Taught in Sensitivity to resource changes · extends Find the allowable range for one cost coefficient

  1. 1

    Write the value you're ranging as its current value plus an unknown shift, \Delta. Everything else -- every other coefficient, every other constraint -- holds still.

    Example

    Ranging Meadowbrook's protein requirement b_1=10: write it as 10+\Delta, holding b_2=15 and both costs fixed.

    • ranging a cost coefficient c_j — the feasible region itself never moves; only which vertex is cheapest can change (Section 6's own case).
    • ranging a resource level b_i — the feasible region's own boundary moves, carrying the optimal vertex along the intersection of the SAME two constraints.

    Why: isolating one unknown, with everything else fixed, is what turns "how far can this move" into a single answerable question.

  2. 2

    For a cost coefficient, substitute into the objective at every candidate vertex (Section 6, Step 2). For a resource level, substitute the shifted right-hand side into the SAME two constraints that are tight at the optimum, and solve that pair of equations for the vertex's coordinates as functions of \Delta.

    Example

    x_1+2x_2=10+\Delta, 3x_1+x_2=15. From the second, x_2=15-3x_1; substituting: x_1+2(15-3x_1)=10+\Delta \Rightarrow -5x_1=\Delta-20 \Rightarrow x_1=4-\tfrac{\Delta}{5}, then x_2=3+\tfrac{3\Delta}{5}.

    Why: the same two boundary lines stay tight until one of the vertex's own coordinates is forced out of the feasible region, so re-solving that pair as functions of \Delta tracks the vertex exactly as it slides.

  3. 3

    For a cost coefficient, impose that the current vertex's cost stays at or below every other vertex's cost (Section 6, Step 3). For a resource level, impose that every coordinate of the SLIDING vertex stays nonnegative -- each coordinate's own formula in \Delta gives one inequality.

    Example

    x_1=4-\tfrac{\Delta}{5}\ge0 \Rightarrow \Delta\le20. x_2=3+\tfrac{3\Delta}{5}\ge0 \Rightarrow \Delta\ge-5.

    • a coordinate's own coefficient on \Delta is negative — increasing \Delta eventually drives it to 0, setting the UPPER edge.
    • a coordinate's own coefficient on \Delta is positive — decreasing \Delta eventually drives it to 0, setting the LOWER edge.

    Why: the vertex stops being a genuine basic feasible solution the moment either coordinate would need to go negative -- Chapter 7's own feasibility requirement, applied to a moving point instead of a fixed one.

  4. 4

    Keep the tightest lower bound and the tightest upper bound among every inequality found, then add the original value back to convert the \Delta-range into the actual allowable range.

    Example

    \Delta\in[-5,20]; adding back b_1=10: b_1\in[10-5,\ 10+20]=[5,\ 30].

    Why: the question was about b_1 itself, not about the bookkeeping shift used to answer it.

Common mistakes

  • Trying to hold the vertex's coordinates fixed while only the constraint moves -- the whole point is that the vertex itself slides.
  • Forgetting to re-derive which two constraints stay tight; the recipe assumes the SAME two stay active, which is true only within the allowable range, not automatically forever.
  • Mixing up the cost case and the resource case mid-calculation -- a resource shift never touches the objective, and a cost shift never touches a constraint's right-hand side.
  • Stopping at the \Delta-range and reporting it as if it were the resource level itself.