Both models take \(S_0\) and the \(S_j\) as arguments and return backorders.
They evaluate a plan. They do not produce one.
A utility with nine repairable items and four storerooms is choosing forty-five numbers, and they are not independent, because they compete for the same money.
\[ \mathit{EBO} = \sum_{\text{items}}\;\sum_{j=1}^{J}\bar{B}_j(S_j) \]
subject to the total cost not exceeding a budget.
Backorders, not dollars. A repairable part does not cost money when it is missing: it grounds the aircraft.
\(\bar{B}_0\) does not appear.
No crew waits at a depot.
A depot backorder costs by lengthening \(\bar{W}\), which inflates every storeroom’s pipeline, which raises the storeroom backorders the objective does count.
So depot stock is valued entirely for what it does four hundred miles away.
That is what makes this one optimization rather than five.
For each item and each location, compute the delta value:
\[ \delta(S) = \frac{\bar{B}(S) - \bar{B}(S+1)}{c} = \frac{G^{0}(S)}{c} \]
backorders removed per dollar. Then buy repeatedly, always taking the largest.
Earliest published reference: O. Gross, RAND, 1956.
Sherbrooke tells the story of briefing a general in Strategic Air Command on the technique.
The general objected that SAC would never accept anything marginal.
Sherbrooke adds that recent references sometimes call it the “greedy heuristic”, hardly an improvement.
The procedure is only defensible if the delta values decline as you buy.
They do, at a single location: \(G^{0}\) is a complementary distribution function and never rises.
That is convexity of \(\bar{B}(S)\), and the sum of convex functions is convex.
If they did not: a one-step look-ahead would undervalue the item, and other items whose deltas sit in between would be bought prematurely.
Fix the depot’s stock and vary a storeroom’s: convex, for the single-location reason.
But the depot’s stock is a decision too, and moving it changes \(\bar{W}\), which moves every storeroom at once.
Each row of Table 3-3 is convex […] But as we move from one level of depot stock to another in the optimal solutions, there is no assurance of convexity.
Best split of a given number of transformers, computed with VARI-METRIC.
| Units | \(S_0\) | at storerooms | \(\mathit{EBO}\) | Reduction |
|---|---|---|---|---|
| 10 | 10 | 0 | 18.6080 | 0.9967 |
| 11 | 11 | 0 | 17.6154 | 0.9927 |
| 12 | 12 | 0 | 16.6303 | 0.9850 |
| 13 | 9 | 4 | 15.6433 | 0.9870 |
| 14 | 10 | 4 | 14.6587 | 0.9846 |
| 15 | 11 | 4 | 13.6817 | 0.9770 |
| 19 | 15 | 4 | 9.9647 | 0.8842 |
| 20 | 12 | 8 | 9.1088 | 0.8559 |
| 21 | 13 | 8 | 8.2462 | 0.8627 |
The twelfth transformer removes 0.9850.
The thirteenth removes 0.9870, which is more.
A procedure comparing one-step improvements will undervalue this item at exactly those points, and spend the money elsewhere.
The reduction rising at 13 means total 12 lies above the line joining 11 and 13.
Check it:
\[ \frac{17.6154 + 15.6433}{2} = 16.6294 < 16.6303 \]
So 12 is the plan never worth buying. It is easy to name the row below it instead, and strike out the wrong one.
[The non-convex points] are easily dealt with by excluding them as potential solutions […] the marginal analysis will jump to the next convex point at the correct time, buying at least two more units of stock of the item.
So totals 12 and 20 are struck out.
The procedure moves from 11 straight to 13, quoting the average of the two reductions as its delta value.
| Units | 10 | 11 | 12 | 13 | … | 19 | 20 | 21 |
|---|---|---|---|---|---|---|---|---|
| Best \(S_0\) | 10 | 11 | 12 | 9 | 15 | 12 | 13 |
The optimal depot stock falls as the total rises.
Buy one more transformer, and the right answer is to move three of the ones you already had out of the depot.
after three units of stock have been allocated optimally to depot and more stock is available for allocation, it becomes optimal to take some of that depot stock and flush it out to the bases.
Sherbrooke notes it is more common when the bases are alike, which is why the four storerooms here were made identical.
Depot stock is pooled, and pooled stock is efficient.
A unit there buys \(G^{0}(S_0)/\lambda_0\) off the delay, divided among four storerooms.
A unit at a storeroom is not pooled, helps only that storeroom, but helps immediately and sits on the right shelf.
While the depot is nearly empty, the pooling dominates: the delay it removes is enormous.
Once the depot is comfortable, the delay left to remove is small, and a unit does more good where a crew can reach it.
The first deck asked where stock should sit and said the answer would come out of a policy calculation.
Here it is, as a column of a table whose purpose was to choose stock levels.
Not “should this item be forward stocked?”
But “forward stocked at what level of total investment?”
That is a better question, it is the one a utility can act on, and the answer is not monotone, so no rule of thumb produces it.
Same rule, with the reductions divided by unit cost.
when we combine across items, the backorder reductions (first differences) must be divided by unit cost.
Add a voltage regulator at $9,500, failing 12 times a year at each storeroom, a fifth rebuilt locally.
| Step | Bought | \(\delta\) per $1,000 | Cumulative | \(\mathit{EBO}\) xfmr | \(\mathit{EBO}\) reg |
|---|---|---|---|---|---|
| 1 | transformer | 0.2632 | $3,800 | 27.6027 | 11.7041 |
| 12 | transformer, two | 0.2595 | $49,400 | 15.6433 | 11.7041 |
| 19 | transformer, two | 0.2261 | $79,800 | 8.2462 | 11.7041 |
| 28 | transformer | 0.1148 | $114,000 | 2.5852 | 11.7041 |
| 29 | regulator | 0.1053 | $123,500 | 2.5852 | 10.7042 |
| 34 | transformer | 0.0988 | $165,300 | 2.2096 | 6.7655 |
| 41 | regulator | 0.0734 | $214,700 | 1.3122 | 3.5973 |
The delta column never rises. That is what convexification bought.
Not one regulator until $114,000 has gone into transformers.
That is not a judgement about regulators. It is arithmetic.
The transformer removes about a quarter of a backorder per thousand dollars; the regulator about a tenth.
A planner reasoning by unit price would have bought regulators first, on the grounds that they are the expensive item and therefore the important one.
Not one answer. A curve.
Every step of the merge is an efficient plan for the money spent up to that point.
That is more useful than a single plan, because the budget is usually not fixed until somebody has seen what the money buys.
“Is the step from $114,000 to $123,500 worth it?” is a question the utility can answer and the model cannot.
The last buy can overshoot badly if the final unit selected is an expensive one.
Remedy: take the levels reached after the overshoot as minimum levels, rerun, and repeat.
That is not a defect in marginal analysis. It is the integrality of the problem, the same overshoot that made the newsvendor rule a first level at or above rule.
Attach a price \(\theta\) to money and minimise
\[ w(\theta) = \sum_j \bar{B}_j(S_j) + \theta\left(c_0 S_0 + \sum_j c_j S_j\right) \]
At a fixed \(\theta\) the storerooms no longer compete for a budget, so each solves its own newsvendor:
\[ S_j = \min\left\{S : G(S) \ge 1 - \theta c_j\right\} \]
No search at a storeroom at all. The depot still needs one.
Cost falls as \(\theta\) rises, so the budget gap is decreasing.
Enumerate a grid and keep the smallest absolute gap.
Or bisect on the sign change.
These are not the same stopping rule, and they do not agree.
Stock levels are integers, so near the answer the cost steps straight over the budget:
| \(\theta\) | \(5.1356 \times 10^{-5}\) | \(5.1361 \times 10^{-5}\) |
|---|---|---|
| cost | $250,800 | $247,000 |
No multiplier spends exactly $250,000. A search has to choose a side.
| Search | Spend | Storeroom backorders | Inside budget |
|---|---|---|---|
| Marginal analysis | $247,000 | 2.8792 | yes |
| Lagrangian, bisection | $247,000 | 2.8792 | yes |
| Lagrangian, enumeration | $250,800 | 2.6840 | no, by $800 |
The bisection converges on the step and returns the feasible side.
The enumeration keeps the smallest absolute gap, and $800 over is nearer than $3,000 under.
A planner who must not overspend wants the bisection or the marginal analysis.
A planner asking what the budget nearly buys is better served by the enumeration, which reports here that $800 more removes another 0.2 backorders.
What you must not do is read the enumeration’s answer as though it respected the budget.
Marginal analysis returns the whole curve and never overspends. It pays for that by enumerating every plan for every item first.
The Lagrangian returns one plan and gets there without building a curve at all.
Which recommends it when the item count runs into the thousands and the budget is genuinely fixed.
A storeroom stocks nothing once \(\theta \ge 1/c_j\).
For a $3,800 transformer the entire useful range is \(2.6 \times 10^{-4}\).
Search \((10^{-3}, 10^{-1})\) and the algorithm reports, correctly and uselessly, that no root exists: every candidate prices money so dearly that nothing is stocked.
Bound the interval by \(1/c\), do not guess it.
All of it rests on \(Q = 1\): the demand a storeroom passes up is its own demand, arrival for arrival.
Remove that, and the pass-up stream has to be derived from scratch.