Let one storeroom run \((r_j, Q_j)\), and let the hub order \(Q_w\) storeroom batches with a reorder point of \(R_w\) batches: \(Q_0 = Q_wQ_j\) and \(r_0 = R_wQ_j\) units.
A hub order is \(Q_w\) sub-batches. The storeroom that triggered it has just reset to \(r_j + Q_j\), so its next orders come after \(Q_j, 2Q_j, \ldots\) further demands: the \(i\)th sub-batch is released against system demand \(iQ_j\), and its units fill the storeroom’s \((r_j + 1)\)th to \((r_j + Q_j)\)th demands. Averaging,
\[ C = \frac{1}{Q_wQ_j}\sum_{i=R_w+1}^{R_w+Q_w}\ \sum_{k=r_j+1}^{r_j+Q_j} C(iQ_j, k) \]
Example. Crews draw two a week; \(Q_j = 3\), a week from a hub ordering \(Q_w = 2\) batches with a three-week lead time. At \((R_w, r_j) = (0, 6)\):
\[ C = \frac{(3.6962 + 3.1290 + 3.0011) + (3.1694 + 3.5117 + 3.9591)}{2 \times 3} = \frac{20.4665}{6} = \$3.4111 \text{ a week} \]
the exact optimum, holding 0.52 cutouts at the hub against 4.13 at the storeroom.
With \(N\) identical storerooms the \(i\)th sub-batch is not released at a fixed demand. Let \(p_{i,j}\) represent the probability that the \(i\)th system demand after a hub order triggers the \(j\)th storeroom order. The other \(N - 1\) storerooms’ positions are uniformly distributed: the chapter’s move again.
| Case | Status | Source |
|---|---|---|
| Hub batches, storerooms one for one, Poisson | Exact | Axsäter (1993), eq. (1) |
| Both batch, one storeroom | Exact | Axsäter (1993), eq. (2) |
| Both batch, identical storerooms, Poisson | Exact | Axsäter (1993), eq. (6) |
| Both batch, two storerooms that differ | Exact | Axsäter (1998) |
| Both batch, compound Poisson demand | Exact | Axsäter (2000) |
| The hub’s demand as a renewal stream of batches | Approximate | Deuermeyer and Schwarz; Svoronos and Zipkin |
Notice the footnote to every exact row: constant lead times and no demand at the hub except the storerooms’. Those are what a real hub has, and they are the subject of the rest of today.
The hub sees one order of \(Q_j\) each time the customers carry the storeroom’s position down through \(r_j\). Let \(u\) represent how far the position sits above \(r_j\) when a window opens, \(D\) the customers’ demand in the window, and \(N\) the number of orders.
\[ \begin{aligned} N \ge n &\iff D \ge u + (n-1)Q_j &&\text{first order after } u \text{, each later one after } Q_j\\ P(N \ge n) &= \frac{1}{Q_j}\sum_{u=1}^{Q_j} P\big(D \ge u + (n-1)Q_j\big) &&u \text{ uniform on } 1, \ldots, Q_j\\ &= \frac{1}{Q_j}\sum_{y=(n-1)Q_j+1}^{nQ_j} P(D \ge y) &&\text{let } y = u + (n-1)Q_j \end{aligned} \]
The storeroom’s orders are its customers’ demand, counted in whole batches. The chance of at least \(n\) orders is the average of \(Q_j\) consecutive tail entries: chapter 8’s Poisson table and nothing else.
Two checks. At \(Q_j = 1\) it is \(P(D \ge n)\), the case of Part I. And \(Q_jE[N] = E[D]\): on average the storeroom passes up its customers’ demand.
Crews draw two a week, \(Q_j = 3\). How many orders reach the hub in three weeks? \(D\) is Poisson with mean 6.
| \(y\) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| \(P(D \ge y)\) | .9975 | .9826 | .9380 | .8488 | .7149 | .5543 | .3937 | .2560 | .1528 | .0839 | .0426 | .0201 |
Averaging in threes:
| \(n\) | 1 | 2 | 3 | 4 |
|---|---|---|---|---|
| \(P(N \ge n)\) | 0.9727 | 0.7060 | 0.2675 | 0.0489 |
| \(P(N = n - 1)\) | 0.0273 | 0.2667 | 0.4385 | 0.2186 |
The check. With 0.0443, 0.0044 and 0.0002 for four, five and six orders,
\[ 3E[N] = 3(0.2667 + 2(0.4385) + 3(0.2186) + 4(0.0443) + 5(0.0044) + 6(0.0002)) = 3(1.9999) = 6.0 \]
the customers’ mean demand. The customers’ demand runs from 0 to a dozen; the hub sees 0, 3, 6, 9 or 12, most likely 6. That is the lumpiness, and the tightly bunched count is the regularity.
A window that ends at one of the storeroom’s orders is not a random moment for that storeroom. Its position has just reached \(r_j\), so \(u\) is known, not uniform.
Let \(D'\) represent the customers’ demand in the window before the demand that triggered the order. It is still Poisson, by independent increments, and the storeroom’s earlier orders in the window number \(\lfloor D'/Q_j \rfloor\).
| Earlier orders | 0 | 1 | 2 | 3 |
|---|---|---|---|---|
| Range of \(D'\) | 0 to 2 | 3 to 5 | 6 to 8 | 9 to 11 |
| Probability | \(G(2) = 0.0620\) | \(0.3837\) | \(0.4015\) | \(0.1327\) |
| At a random moment, \(P(N = n)\) | 0.0273 | 0.2667 | 0.4385 | 0.2186 |
Notice how much more weight sits on few orders. The storeroom has just ordered, so its position is at the top of its range, the farthest it can be from its next order.
Hub \((r_0, Q_0) = (1, 6)\), \(L_0 = 3\), starts with 7. Storeroom \((r_j, Q_j) = (1, 3)\), a week away, starts with 4. Failures in weeks 1, 3, 5, 7, 8, 9, 9, 10, 11; one unit of other demand at the hub in weeks 2 and 4.
| Week | Event | \(I_j\) | \(B_j\) | \(\mathit{IP}_j\) | In transit | \(I_0\) | \(B_0\) | On order | \(\mathit{IP}_0\) |
|---|---|---|---|---|---|---|---|---|---|
| 0 | start | 4 | 0 | 4 | 0 | 7 | 0 | 0 | 7 |
| 1 | failure | 3 | 0 | 3 | 0 | 7 | 0 | 0 | 7 |
| 2 | other demand at the hub | 3 | 0 | 3 | 0 | 6 | 0 | 0 | 6 |
| 3 | failure | 2 | 0 | 2 | 0 | 6 | 0 | 0 | 6 |
| 4 | other demand at the hub | 2 | 0 | 2 | 0 | 5 | 0 | 0 | 5 |
| 5 | failure, order of 3 to hub, shipped | 1 | 0 | 4 | 3 | 2 | 0 | 0 | 2 |
| 6 | storeroom receives 3 | 4 | 0 | 4 | 0 | 2 | 0 | 0 | 2 |
| 7 | failure | 3 | 0 | 3 | 0 | 2 | 0 | 0 | 2 |
| 8 | failure | 2 | 0 | 2 | 0 | 2 | 0 | 0 | 2 |
| Week | Event | \(I_j\) | \(B_j\) | \(\mathit{IP}_j\) | In transit | \(I_0\) | \(B_0\) | On order | \(\mathit{IP}_0\) |
|---|---|---|---|---|---|---|---|---|---|
| 8 | (carried from the last slide) | 2 | 0 | 2 | 0 | 2 | 0 | 0 | 2 |
| 9 | failure, order of 3: 2 shipped, 1 backordered, hub orders 6 | 1 | 0 | 4 | 2 | 0 | 1 | 6 | 5 |
| 9 | failure | 0 | 0 | 3 | 2 | 0 | 1 | 6 | 5 |
| 10 | storeroom receives 2 | 2 | 0 | 3 | 0 | 0 | 1 | 6 | 5 |
| 10 | failure | 1 | 0 | 2 | 0 | 0 | 1 | 6 | 5 |
| 11 | failure, order of 3 to hub, backordered | 0 | 0 | 4 | 0 | 0 | 4 | 6 | 2 |
| 12 | hub receives 6, completes the week-9 order, fills week 11 | 0 | 0 | 4 | 4 | 2 | 0 | 0 | 2 |
| 13 | storeroom receives 4 | 4 | 0 | 4 | 0 | 2 | 0 | 0 | 2 |
Customer failures can be invisible to the hub. Weeks 1, 3, 7 and 8 left its position untouched.
An order arrives all at once, and can carry the hub’s position past \(r_0\) in a single step.
An order is filled when its last unit is. The week-9 order shipped two units at once and its third three weeks later; it waited three weeks.
The count, checked. The storeroom ordered in weeks 5, 9 and 11, so weeks 9 to 11 hold two orders and weeks 6 to 8 hold none. Both have appreciable probability in the count we just computed, and the second is the regularity: a storeroom that has just ordered does not order again for a while.
Let \(X_o(\ell)\) represent the hub’s own customers’ demand in \(\ell\) weeks, Poisson with mean \(\lambda_o\ell\), and \(N_j(\ell)\) count storeroom \(j\)’s orders. Then
\[ D_0(\ell) = X_o(\ell) + \sum_j Q_jN_j(\ell) \]
and the terms are independent, since each storeroom’s position is uniform and independent of every other’s. Its distribution is a convolution: a short table by hand, a worksheet column otherwise. Every hub measure then follows from chapter 8 unchanged. The storerooms need not be identical; each adds one term.
The hub’s position is uniform on \(r_0 + 1, \ldots, r_0 + Q_0\) provided some of its demand comes one unit at a time. If its only demand is storeroom orders of a common size \(Q_j\), the position moves in steps of \(Q_j\), which is why Axsäter counts the hub in batches.
Let \(U_0\) and \(U_\ell\) represent how far the storeroom’s position sits above \(r_j\) at the start and end of the window. Then:
\[ \begin{aligned} Q_jN_j &= D + U_\ell - U_0 &&\text{units ordered} = \text{demand} + \text{change in position}\\ \mathit{Var}[Q_jN_j] &\approx \lambda_j\ell + 2\cdot\frac{Q_j^{2} - 1}{12} = \lambda_j\ell + \frac{Q_j^{2} - 1}{6} &&U_0, U_\ell \text{ independent, uniform on } 1, \ldots, Q_j\\ \mathit{Var}[D_0(\ell)] &\approx \lambda_o\ell + \sum_j\Big(\lambda_j\ell + \frac{Q_j^{2}}{6}\Big) &&\text{the recipe: continuous version} \end{aligned} \]
The recipe’s \(Q_j^{2}/6\) errs by a sixth of a unit squared, on the safe side.
The shortcut
Treat each storeroom’s orders as Poisson arrivals of \(Q_j\) units at rate \(\lambda_j/Q_j\). That gives a variance of \(\lambda_jQ_j\ell\), \(Q_j\) times its customers’ own. The storeroom orders once per \(Q_j\) units of demand, nearly on a schedule, and the shortcut charges the hub for a randomness that is not there.
The hub serves two cutouts a week of its own and the storeroom of the order count (\(\lambda_j = 2\), \(Q_j = 3\)); \(Q_0 = 8\), \(L_0 = 3\) weeks. \(D_0(3) = X_o(3) + 3N(3)\), with \(X_o(3)\) Poisson, mean 6.
| Model of \(D_0(3)\) | Variance | Best \(r_0\) | Cost a week, priced exactly |
|---|---|---|---|
| Exact convolution | 13.333 | 13 | $4.4054 |
| Two-moment recipe | \(6 + 6 + 9/6 = 13.5\) | 13 | $4.4054 |
| Shortcut | \(6 + 2(3)(3) = 24\) | ? | ? |
Which reorder point does the shortcut choose, and what does it cost?
15, at $4.6533 a week. It believes the hub faces nearly twice the variance it does, holds two cutouts too many, and costs 5.6% more.
The check. The mean is \(\lambda_0L_0 = 4 \times 3 = 12\), and the exact variance exceeds the customers’ \(6 + 6 = 12\) by \(1.333 = (3^{2} - 1)/6\).
The lead-time shift still applies: an order placed at \(A\) is complete by \(A + w\) exactly when the hub’s position \(\ell = L_0 - w\) weeks earlier covered all the demand since, the order’s own \(Q_j\) units included.
\[ P(W_j \le w) = \frac{1}{Q_0}\sum_{u=r_0+1}^{r_0+Q_0} P\Big(X_o(\ell) + \sum_{i \ne j} Q_iN_i(\ell) + Q_j\big\lfloor D_j'(\ell)/Q_j\big\rfloor \le u - Q_j\Big) \]
Three differences from a customer’s single unit, each visible in the ledger:
Conditioning on this wait is exact. The code agrees with Axsäter’s equations (2) and (6) on 240 policies to six decimals. Using a customer’s wait instead overstates the cost by 14% on one test system.
The same system, hub at \((r_0, Q_0) = (12, 8)\), storeroom at \((r_j, Q_j) = (3, 3)\), one week from the hub.
| Waits nothing | At most a week | Mean wait | |
|---|---|---|---|
| A customer of the hub’s own | 0.8228 | 0.9797 | 0.0874 weeks |
| The storeroom’s order | 0.7626 | 0.9668 | 0.1264 weeks |
The order’s wait has variance 0.0894. It waits 45% longer than a customer: it needs three units, and it arrives just after a draw of three the hub has had no time to recover from.
| Route to the storeroom’s lead time demand | Backorders | Against conditioning |
|---|---|---|
| Conditioned on the order’s wait | 0.0823 | exact |
| Two moments | 0.0783 | 5% low |
| The mean wait only | 0.0559 | 32% low |
Let \(L_0\) take values \(\ell_1, \ldots, \ell_K\) with probabilities \(p_1, \ldots, p_K\). Condition on the lead time, then average:
\[ P\big(D_0(L_0) \le x\big) = \sum_k p_k\,P\big(D_0(\ell_k) \le x\big), \qquad P(W \le w) = \sum_k p_k\,P(W \le w \mid L_0 = \ell_k) \]
The order matters
Both streams are counted over the same lead time, so they are independent only once its value is known. Averaging each over the lead time separately and then adding loses the covariance a shared lead time creates,
\[ \mathit{Cov} = 2\lambda_o\lambda_j\,\mathit{Var}[L_0] \]
and understates the variance.
The wait mixture needs lead times that vary without orders overtaking and independently of demand, the condition chapter 8 already imposed.
The same system, but the supplier takes 2, 3 or 5 weeks with probabilities 0.4, 0.4, 0.2: mean still 3, and \(\mathit{Var}[L_0] = 0.4(1) + 0.4(0) + 0.2(4) = 1.2\) weeks squared.
| Constant 3 weeks | Varying supplier | |
|---|---|---|
| Hub lead time demand variance | 13.333 | 32.535 (one stream at a time: 22.935) |
| Hub ready rate at \((12, 8)\) | 0.8228 | 0.7656 |
| Hub backorders | 0.3497 | 0.9948 |
| Order’s mean wait, variance | 0.1264, 0.0894 | 0.3037, 0.4396 |
The check. \(32.535 - 22.935 = 9.6 = 2 \times 2 \times 2 \times 1.2\).
Planned on the mean wait the storeroom chooses \(r_j = 3\); on two moments or the whole distribution, \(r_j = 4\). Priced by conditioning: 0.239 owed at $2.7771 a week, against 0.143 at $2.7472.
Planned on the mean wait, it owes its crews 67% more at a cost only 1.1% higher. Both numbers are worth stating: a utility watching cost will not notice what its crews do.
Batching storerooms are exact while the hub has no other demand and lead times are constant: Axsäter’s equations (2) and (6).
A storeroom’s orders are its demand counted in whole batches, read from the Poisson table by averaging over a uniform position.
The hub’s lead time demand is a convolution; the two-moment recipe is close, and the Poisson-orders shortcut over-stocks by two units and 5.6%.
An order waits for its last unit, seen from the order: 45% longer than a customer.
A random supplier is conditioned on, then averaged, in that order; reversing it drops the covariance.
Read before next session: Setting Both Policies, Validating the Iteration, The Cutout in Job Lots, Building These Models in a Worksheet and Designing the Software.
Today’s material was When the Storerooms Batch Too through Random Lead Times.
Next session:
Part II evaluates any pair of policies. Part III chooses them.