The depot’s backorders are the storeroom’s lead time.
\[ \mu_j = \phi_j\lambda_j T_j + (1-\phi_j)\lambda_j\left(O_j + \bar{W}\right) \]
We produced \(\bar{W}\) by hand, on twenty-six weeks of one realization.
We cannot run a ledger for every item at every storeroom, and we cannot run one at all for a system that has not been built yet.
Its demand is Poisson. Each storeroom’s requests are its failures thinned, and a superposition of independent Poisson processes is Poisson.
It replenishes one for one. Every request arrives with a carcass, and the carcass goes on the bench at once.
And it waits for nobody. Its supplier is its own shop, which has capacity to spare. There is no further echelon behind it.
\[ \mu_0 = \lambda_0 T_0 \]
and everything from the single-location deck applies to the depot unchanged:
\[ \bar{B}_0(S_0) = G^{1}(S_0) \]
evaluated on the Poisson with mean \(\mu_0\).
No \(S_j\). No \(O_j\). No \(T_j\).
The depot’s own performance does not depend on how much stock the storerooms hold.
So the depot can be solved first, once, and on its own, and the storerooms follow from it.
There is no circle to iterate around.
That is a property of \(Q = 1\), and it does not survive batching.
Take the system to be the requests the depot has accepted but not filled.
Arrivals are requests it cannot fill on the spot. The average number in that system is \(\bar{B}_0\). The rate is \(\lambda_0\).
\[ \bar{W} = \frac{\bar{B}_0(S_0)}{\lambda_0} \]
This is the relation the ledger verified. Six backorder-weeks over five requests, 1.20 weeks, twice.
The depot clears backorders in the order they arrived, without regard to who raised them.
So a request from a large storeroom waits no longer than one from a small storeroom.
\[ \mu_j = \phi_j\lambda_j T_j + (1-\phi_j)\lambda_j\left(O_j + \bar{W}\right) \]
with a single \(\bar{W}\) shared by all of them.
The storerooms still differ, through \(\phi_j\), \(T_j\), \(O_j\), \(\lambda_j\). What they do not differ in is the delay.
\(\bar{W}\) is the average over all requests, including the ones filled immediately, which wait nothing.
It is not the average wait of the delayed requests.
In the ledger, two of five waited, four weeks and two weeks.
Delayed requests averaged three weeks. \(\bar{W}\) reports 1.20.
Both correct, different questions. The pipeline formula wants the first, because it multiplies by the rate of all requests.
\[ \bar{W}(S_0) - \bar{W}(S_0+1) = \frac{G^{0}(S_0)}{\lambda_0} \]
Diminishing, for the same reason as before.
But it is not the same decision. A unit at a storeroom helps that storeroom.
A unit at the depot shortens \(\bar{W}\), which shrinks the pipeline at every storeroom at once.
Four storerooms, \(\lambda_0 = 126\) a year, \(T_0 = 60\) days, so \(\mu_0 = 20.7123\).
| \(S_0\) | \(\bar{B}_0\) | \(\bar{W}\) (days) | \(\mu_j\) | \(\bar{B}_j\) at \(S_j=4\) |
|---|---|---|---|---|
| 16 | 5.0201 | 14.54 | 3.2276 | 0.4055 |
| 18 | 3.4443 | 9.98 | 2.8337 | 0.2638 |
| 20 | 2.1763 | 6.30 | 2.5167 | 0.1748 |
| 22 | 1.2550 | 3.64 | 2.2863 | 0.1238 |
| 24 | 0.6565 | 1.90 | 2.1367 | 0.0964 |
Six units at the depot cut the delay from 14.5 days to 3.6, and backorders by about seventy percent at all four storerooms at once.
Forward stocking would have needed twenty-four.
Multi-Echelon Technique for Recoverable Item Control.
Sherbrooke, 1968. The oldest multi-echelon inventory model in continuous use.
The ancestor of everything in this chapter and the next.
metric(S_0, S_1 ... S_J):
// 1, the demand the depot faces
lambda_0 <- sum over j of (1 - phi_j) * lambda_j
// 2, the depot's pipeline, then its backorders
mu_0 <- lambda_0 * T_0
Bbar_0 <- G1(S_0), Poisson with mean mu_0
// 3, the delay it imposes on everybody
Wbar <- Bbar_0 / lambda_0
// 4, each storeroom in turn
for each storeroom j:
mu_j <- phi_j*lambda_j*T_j + (1 - phi_j)*lambda_j*(O_j + Wbar)
Bbar_j <- G1(S_j), Poisson with mean mu_j
There is no loop. A straight line from rates to answers. Nothing iterated, nothing to converge.
It does not choose anything. Its arguments are stock levels and its returns are backorders: it evaluates a plan handed to it.
The search comes later, and it will call this many times.
Four storerooms, \(S_0 = 16\), \(S_j = 4\). Twenty units in all.
Step 1. \(\lambda_0 = 126\) a year.
Step 2. \(\mu_0 = 126(60/365) = 20.7123\), so \(\bar{B}_0 = 5.0201\).
Step 3. \(\bar{W} = 5.0201/126 = 14.54\) days.
Step 4. \(\mu_j = 1.1096 + 2.1180 = 3.2276\), so \(\bar{B}_j = 0.4055\).
Across four: 1.6218 transformers owed to waiting crews at any moment.
We warned that applying Palm here is outside its warrant.
Paying that debt is the most useful thing in this chapter, because the model fails in a specific and repairable way.
The depot’s pipeline really is Poisson, so \(\bar{B}_0\) is exact.
The delay is exact, because Little’s Law assumes almost nothing.
The storeroom’s pipeline mean is exact too, for the same reason: Little’s Law applied to the storeroom’s own resupply, with no independence assumed anywhere.
Every mean METRIC computes is exact. Say that before criticizing anything.
That \(X_j\) is Poisson.
A Poisson has its variance equal to its mean, and here the model asserts something it has not shown.
Two requests arriving while the depot is empty wait for the same repairs to finish.
Their delays move together. Delays that move together make the count more variable than a Poisson count with the same mean.
It was known to the model’s author at the time.
when the METRIC model was developed, it was clear that it understated base backorders. In most cases the error was not large, and the simplicity of METRIC seemed to overshadow the lack of precision.
Sherbrooke, 1986.
Backorders are a tail quantity, so a distribution that is too tight produces too few of them.
[These models] understate the multi-echelon delay in the resupply of a base from a depot that has backorders [and] tend to understate expected backorders and overstate expected availability of repair items.
A utility sizing spares with METRIC will believe it is doing better than it is.
Graves compares the stock levels the two models choose, not the backorders they report. That is the comparison a planner acts on.
Graves shows that in 11% of cases, the METRIC stock levels differ by at least one unit from the optimal results; the VARI-METRIC levels differ in only 1%.
And the qualification is the more useful half:
the 10-fold improvement of VARI-METRIC is probably more meaningful than the actual percentages, which depend on the number of bases, mean demands over the repair time, and other input values.
The size of the error is a property of the system, not of METRIC.
The instinct on meeting a gap is to inflate a lead time until the answer matches.
Do not. The means are already right. It is the second moment that is missing.
A fudge to the first moment breaks the agreement that exists while only approximately repairing the one that does not. It will also fail on the next item.
Slay, 1980. Graves, 1985, published the short derivation.
METRIC is a first-order model using mean values only, whereas VARI-METRIC is a second-order model incorporating variances as well.
Compute the variance METRIC threw away, and use a distribution that can hold it.
The depot owes \(B_0\) units at a random instant.
How many of them are owed to storeroom \(j\)?
It fills in arrival order without regard to who asked, so each outstanding backorder came from storeroom \(j\) with probability
\[ f_j = \frac{\lambda_{j0}}{\lambda_0} \]
and they are labelled independently.
Simon (1971) and Graves have shown that the number of units in resupply at base \(I\), conditional on the total number of units in resupply at all bases, has a binomial distribution when the original demand process is Poisson.
So conditional on \(B_0\), the units owed to storeroom \(j\) are \(\text{Binomial}(B_0, f_j)\).
\[ E[B_{0j}] = f_j\bar{B}_0 \]
\[ \mathit{Var}[B_{0j}] = f_j(1-f_j)\bar{B}_0 + f_j^{2}\,\mathit{Var}[B_0] \]
Read the two separately. The first is the randomness in which storeroom each backorder belongs to. The second is the randomness in how many there are, scaled by \(f_j^2\).
METRIC keeps neither.
\[ \mu_j = \lambda_j\left[\phi_j T_j + (1-\phi_j)O_j\right] + f_j\bar{B}_0 \]
\[ \sigma_j^{2} = \lambda_j\left[\phi_j T_j + (1-\phi_j)O_j\right] + f_j(1-f_j)\bar{B}_0 + f_j^{2}\,\mathit{Var}[B_0] \]
The mean is unchanged. \(f_j\bar{B}_0 = (1-\phi_j)\lambda_j\bar{W}\), which is the term METRIC already had.
Set the last two terms to zero and you have METRIC back.
So the two are not rivals. They are one model read to one moment or to two.
Define \(E[B^{2}(s)] = \sum_{x>s}(x-s)^{2}g(x)\).
Sherbrooke gives a recursion, attributed to Konvalinka:
\[ E[B^{2}(s)] = E[B^{2}(s-1)] - E[B(s)] - E[B(s-1)] \]
started from \(E[B^{2}(0)] = \mu_0 + \mu_0^{2}\).
\[ \mathit{Var}[B_0] = E[B^{2}(S_0)] - \bar{B}_0^{2} \]
Write the square as \((x-s)^{2} = (x-s)(x-s-1) + (x-s)\) and take expectations:
\[ E[B^{2}(s)] = 2\,G^{2}(s) + G^{1}(s) \]
The recursion is the right form for a worksheet, which has rows and no second order loss function.
The closed form is the right form for a program, which has the reverse.
Neither is a mistake. Hold them to each other.
We have \(\mu_j\) and \(\sigma_j^2 > \mu_j\).
The negative binomial is the family for \(\mathit{VMR} > 1\):
\[ p = \frac{\mu_j}{\sigma_j^{2}}, \qquad \beta = \frac{1-p}{p}, \qquad r = \frac{\mu_j}{\beta} \]
and every measure from the single-location deck applies, evaluated on this instead of a Poisson.
A negative binomial is a Poisson whose rate is itself random, drawn from a gamma.
That is exactly the situation. The pipeline would be Poisson if the depot delay were fixed; what spoils it is that the delay varies.
This is not an analogy bolted on afterwards. It is the title of the paper that introduced the method: An Approach to Modeling Multi-Echelon Resupply when the Demand Process is Poisson with a Gamma Prior.
The fit needs \(\sigma_j^{2} > \mu_j\), or the formulas return nonsense.
extensive calculations by us (and Graves) indicate that if \(x\) […] is Poisson, then the function \(\mathit{Var}[B(s)]/E[B(s)]\) is unimodal and greater than one, except for \(s = 0\)
neither Graves or we have been able to supply a proof.
So: test it before fitting. A Poisson at a ratio of one, a gamma below it. Do not assume what the literature declines to.
The fit divides by \(1 - p\), and \(p \to 1\) as the variance approaches the mean. The original code therefore used a Poisson for any ratio between 0.9 and 1.1.
At \(S_0 = 24\) the ratio is only 1.0641, and at \(S_j = 4\):
| Poisson (METRIC) | Negative binomial | Simulated, 30 \(\times\) 1,000 years |
|---|---|---|
| 0.0964 | 0.1095 | 0.1101 \(\pm\) 0.0007 |
So the software fits a negative binomial whenever \(\sigma_j^{2}/\mu_j > 1\), a Poisson only at one, and a gamma below it.
A band also makes backorders jump at its edge, and an allocation search buys to the jump.
\(S_0 = 16\), \(S_j = 4\), unchanged.
Depot: \(\bar{B}_0 = 5.0201\) and \(\mathit{Var}[B_0] = 16.6215\).
A variance-to-mean ratio of 3.31 at the depot. That is the quantity METRIC discards.
\(\mu_j = 3.2276\) (both models), \(\sigma_j^{2} = 3.9527\), so \(p = 0.8166\) and \(r = 14.37\).
| METRIC | VARI-METRIC | |
|---|---|---|
| \(\mu_j\) | 3.2276 | 3.2276 |
| \(\sigma_j^{2}\) | 3.2276 | 3.9527 |
| \(\bar{B}_j\) | 0.4055 | 0.4815 |
| across four | 1.6218 | 1.9259 |
About 19 percent more backorders on a plan neither model changed.
The plan did not change. The system did not change. What changed is that the model now admits it does not know how long a request will wait.
[VARI-METRIC] produces an estimate of backorders that exceeds that of METRIC in all cases except when stock levels are zero (when the two models agree).
Wherever they differ, VARI-METRIC is the pessimistic one.
The extra backorders are ones METRIC was concealing, not ones VARI-METRIC invented.
Still missing: nothing here chooses a stock level. Every example was handed one. Next deck.