Definition · Reduced costThe reduced cost of column j is yᵀaⱼ − cⱼ, the objective-row entry over that column at the optimum. For a maximisation it is zero on every basic column and non-negative on every other one.
Read as a sentence it is the amount by which what one unit of activity j would consume, valued at the current prices, exceeds what it earns. A nonbasic activity is not made because that number is positive.
Right-hand-side ranging asked how far the data could move while the basis stayed feasible. This lesson asks how far it can move while the basis stays optimal. Those are different questions about different halves of the tableau: b appears only in the right-hand column, and the objective coefficients appear only in the objective row. Which is why one is a ratio test down a column and the other is a ratio test along a row.
Theorem · The two rangesLet the simplex method finish with basis B, plan x, prices y and reduced costs rⱼ = yᵀaⱼ − cⱼ.
If xⱼ is basic, occupying row p of the tableau, then the basis stays optimal for cⱼ + Δ exactly while rₖ + Δ·(row p of B⁻¹A)ₖ ≥ 0 for every nonbasic k — one bound per nonbasic column, Δ bounded above by the smallest rₖ / (−a_pk) over negative entries and below by the largest over positive ones. Inside, the plan is unchanged and z* becomes z* + Δxⱼ.
If xⱼ is nonbasic, the basis stays optimal exactly while Δ ≤ rⱼ, with no lower bound at all. Inside, neither the plan nor z* changes.
three activities max 8x1 + 5x2 + 3x3
machine 2x1 + x2 + x3 ≤ 10
labour x1 + x2 + 2x3 ≤ 8
contract x1 ≤ 4
optimum x = (2, 6, 0) z* = 46 y = (3, 2, 0)
reduced costs x1: 0 x2: 0 x3: y'a3 − c3 = 3 + 4 − 3 = 4
coefficient made? range at the ends
c1 = 8 basic yes 5 ≤ c1 ≤ 10 40 and 50
c2 = 5 basic yes 4 ≤ c2 ≤ 8 40 and 64
c3 = 3 nonbasic no c3 ≤ 7 46 at 7
inside a basic range c1 = 9: plan still (2, 6, 0), z* = 48
at its end c1 = 10: (2, 6, 0) and (4, 2, 0) BOTH earn 50
inside a nonbasic range c3 = 6: plan still (2, 6, 0), z* = 46
past its end c3 = 8: plan becomes (4, 0, 2), z* = 48
Example · A coefficient that is being madec1 = 8 is basic, and the plan makes 2 of it. Its range is 5 ≤ c1 ≤ 10. Raise it to 9 and the plan does not move at all: still (2, 6, 0), and the total goes from 46 to 46 + 1(2) = 48. That is the whole of the inside of a basic range — a different number and the same decision.
At c1 = 10 something exact happens: a reduced cost is precisely zero, and (4, 2, 0) earns 50 as well. Both corners are optimal and one pivot moves between them. Past 10 the answer really is (4, 2, 0) and the plan has changed once, at a value the lab prints.
The other computation, which is smaller and easier to get wrong
Example · A coefficient that is not being madec3 = 3 is nonbasic with a reduced cost of 4, so its range is c3 ≤ 7. Raise it from 3 to 6 and nothing whatever happens: the plan is still (2, 6, 0) and the total is still 46. The third product got twice as profitable and it is still not worth making.
At c3 = 7 the reduced cost is exactly zero and (4, 0, 2) also earns 46. At c3 = 8 the answer moves: (4, 0, 2) with a total of 48. So the improvement needed before anything happens is exactly the reduced cost, and the range is one-sided because making the product even less profitable cannot make it worth starting.
Two things about that one-sidedness are worth saying out loud. An interval unbounded below is a complete answer, not a missing number — the lab prints it as such. And the value at which a nonbasic coefficient matters is cⱼ + rⱼ, which is yᵀaⱼ: the coefficient becomes interesting exactly when it reaches what the activity's ingredients are already worth. That is the next lesson's question asked about a column already in the model.
Which of the plan and the value changes
So the answer to any single stated change comes in two parts, and the commonest error is to give only one of them. Inside a basic range: the plan does not change and the value does, by Δcⱼ times the amount made. Inside a nonbasic range: neither changes. At the end of either: two plans tie, both optimal, one pivot apart. Past the end: the plan has changed, and the old range no longer describes anything.
Example · The same ranging on a minimisationmin 2x + 3y subject to x + y ≥ 4, x ≤ 3, y ≥ 1 costs 9 at (3, 1). The first ingredient may cost anything from 0 to 3: at c = 3/2 the total is 15/2 with nothing tied, and at either end of the interval two plans tie, costing 3 at the bottom and 12 at the top.
The second ingredient's range is 2 ≤ c with no upper end, and at c = 2 the total is 8. Both are ranges in exactly the sense above; what has changed is only that the solver negates a minimisation on the way in, so a coefficient handed to it has to be negated too. A kit that skipped that would print intervals that look like intervals and endpoints that are not endpoints.