Many Items at Once, and Keeping a Policy Current

Manuel D. Rossetti, PhD P.E.

Agenda

  • A storeroom holds thousands of items. What couples them, and what does not
  • Two formulations, and why one of them must be solved in order
  • Why an average service target is not an equal service target
  • Where \(\lambda\), \(\theta\) and \(\sigma_{D(L)}\) actually come from
  • The one place the normal enters this chapter
  • Which parameters move, how often, and which one you can afford to neglect

Where We Left Off

Last time ended on a warning:

Before raising service on everything, find out which items are carrying the average.

That was asserted. Today we earn it.

The Items Do Not Couple Through the Physics

Each item has its own demand, its own lead time, its own lead time demand distribution.

Nothing in the evaluation of item \(j\) refers to item \(i\).

So a storeroom of 3,000 items is 3,000 separate problems.

Until you notice what they share.

They Couple Through What They Share

One storekeeper. The order handling capacity is fixed, so the average order frequency across the portfolio is constrained rather than priced.

One budget. The money is spent once.

One service figure. The organization commits to an average fill rate across items, not to a fill rate on each.

Let \(j\) index the items. Both couplings are the stochastic counterpart of what we did in the deterministic multi-item chapter.

Two Formulations

A common backorder cost \(b\), charged per unit per unit time:

\[ G_{j}(r_{j}^{*}) = \frac{b}{b + h_{j}} \]

A common stockout cost \(k\), charged per unit short:

\[ G_{j}(r_{j}^{*}) = \frac{k\lambda_{j}}{k\lambda_{j} + h_{j}Q_{j}} \]

In both, the order quantities are the multi-item economic order quantities \(Q_{j} = \sqrt{2A\lambda_{j}/h_{j}}\), with \(A\) the shared ordering cost.

Notice Which One Contains \(Q_j\)

\[ \underbrace{\frac{b}{b + h_{j}}}_{\text{no } Q_j} \qquad\qquad \underbrace{\frac{k\lambda_{j}}{k\lambda_{j} + h_{j}Q_{j}}}_{Q_j \text{ is here}} \]

Thus, in the stockout formulation the reorder points cannot be set independently of the order quantities.

That is not a detail of notation. It fixes the order the search has to run in.

When Neither Cost Can Be Defended

Replace both with constraints:

\[ \min \; \text{inventory investment} \quad\text{subject to}\quad \overline{\mathit{OF}} \le F, \quad \overline{\mathit{FR}} \ge S \]

Two constraints, two multipliers. Search on them in turn.

Two Constraints, Two Loops

  1. Adjust \(A\) until the order frequency constraint binds.
  2. Holding \(A\) fixed, adjust the shortage cost until the service constraint binds.

The order matters. \(A\) sets the order quantities, the order quantities appear in the stockout condition, and so the reorder points depend on \(A\).

The reverse is not true. Thus, settling order frequency first converges; the other order chases itself.

One Thing Worth Saying Out Loud

The parameters are computed from the approximation.

The constraints are checked with the exact measures.

That is the practice recommended two lectures ago, arrived at here again for the same reason: the approximation is a good way to find a policy and a bad way to report one.

Equal Service Is Not Efficient

This is the result worth carrying away, and it contradicts what most organizations do.

In Hopp and Spearman’s worked example, a 95% average fill rate is reached by giving

  • 99.5% to a cheap, fast-moving part
  • 74.9% to an expensive, slow-moving one

The algorithm buys service where it is cheap and where it moves the average. That means low unit cost and high demand.

The Storeroom Shows Why, With No Arithmetic

Take the fuse cutout’s backorder cost, \(b = \$287.50\) per unit per year, and apply that one figure across the storeroom. Charge each item its own \(h_{j} = 0.25c_{j}\) and read off \(b/(b+h_j)\).

Item \(c_j\) \(h_j\) implied ready rate
Pad-mount transformer $3,800.00 $950.00 0.2323
Fuse cutout $115.00 $28.75 0.9091
Meter socket $48.00 $12.00 0.9599
Ground rod $14.00 $3.50 0.9880
Warning tape $2.10 $0.53 0.9982

From 23.2% to 99.8% across one storeroom, and nothing but the unit cost produced the spread.

And We Can Show the Assumption Fails

The transformer’s own backorder cost was established earlier in the chapter: $8,550 per unit per year.

That is thirty times the cutout’s $287.50. Reading the same condition at the item’s own figure:

\[ \frac{8550}{8550 + 950} = 0.90 \qquad\text{against}\qquad 0.2323 \]

The shared-cost model would run the transformer at a 23% ready rate where its own cost calls for 90%.

It would do so because the cutout’s penalty was applied to an item worth thirty-three times as much.

So Which Form Is Honest?

A portfolio-wide shortage cost is defensible when the items are alike.

The storeroom’s items are not alike. Unit costs span three orders of magnitude.

Where they are not alike, the constrained form is the honest one, because a constraint on the average does not claim that every item has the same penalty.

The Exchange Curve Returns

The deterministic chapter drew aggregate investment against aggregate order frequency, and read a firm’s implied cost ratio off its own practice.

The same curve exists here, between aggregate investment and aggregate fill rate, with one curve per order frequency.

Read the same way. Same warning:

A point above the curve is a portfolio whose parameters are not the ones it thinks it is using.

Where the Numbers Come From

Every Parameter Has Arrived as a Given

The demand rate was \(\lambda\). The lead time was \(L\). The costs were \(k\), \(h\) and \(b\).

In a system that is actually running:

  • \(\lambda\) is an output of a forecasting system that revises it every period
  • \(L\) belongs to the supplier, and moves when the supplier does
  • \(h\) moves whenever the item is repriced

Throughout, we assume stationary demand: a level that drifts slowly, not one carrying a trend or a season.

What the Forecast Supplies

Let \(t_{F}\) represent the basic forecast period, and \(\hat{D}_{t}\) the forecast of demand in one such period, revised at the end of period \(t\).

\[ \lambda = \frac{\hat{D}_{t}}{t_{F}} \]

This is the same \(\lambda\) every formula in this chapter has used.

Notice that it carries a period subscript in everything but name. It is the rate as of period \(t\), and next period it is a different number.

Dispersion Comes From the Same System

Let \(\mathit{MAD}_{t}\) represent the smoothed mean absolute deviation of the one period ahead forecast error.

Forecasting systems track mean absolute deviation rather than variance because updating it costs an absolute value instead of a square.

Converting one to the other takes an assumption. For a normally distributed error, \(E[|X - E[X]|] = \sigma\sqrt{2/\pi}\), so

\[ \sigma_{D} = \sqrt{\tfrac{\pi}{2}}\,\mathit{MAD}_{t} \approx 1.2533\,\mathit{MAD}_{t} \]

The Normal Enters Here, and Nowhere Else

What that conversion assumes normal is the forecast error.

It is not a statement about the shape of \(D(L)\).

\(D(L)\) still gets its family chosen the way we chose it: by matching two moments to a Poisson, a negative binomial or a gamma.

And we said why the normal is not among the candidates offered there.

Confusing the two is how the normal gets into a lead time demand model without anyone deciding to put it there.

Carrying Them Over a Lead Time

The policy is exposed to demand over a lead time, not over a forecast period.

Let \(\eta\) represent the scaling exponent. Then

\[ \theta = \frac{\hat{D}_{t}}{t_{F}}L, \qquad \sigma_{D(L)} = \sigma_{D}\left(\frac{L}{t_{F}}\right)^{\eta} \]

\(L/t_{F}\) is the number of forecast periods in a lead time, and it is dimensionless.

The Exponent Is the Consequential Choice

\(\eta = \tfrac{1}{2}\) recovers the familiar square root rule, and it is correct when the one period forecast errors are independent.

In practice \(\tfrac{1}{2} \le \eta \le 1\). You raise \(\eta\) toward 1 as the errors become positively autocorrelated.

That is what happens when the smoothing is slow to follow a change in level.

Thus, \(\eta\) is where a forecast that lags gets paid for.

A Check on the Transformer

Monthly forecasting, so \(t_F\) is one month. The system reports \(\hat{D}_{t} = 3.75\) units and \(\mathit{MAD}_{t} = 1.55\) units.

\[ \lambda = \frac{3.75 \text{ units}}{1 \text{ month}} \times \frac{12 \text{ months}}{1 \text{ year}} = 45 \text{ units per year} \]

\(\sigma_{D} = 1.2533(1.55) = 1.94\) units per month. A two month lead time puts \(L/t_{F} = 2\), so at \(\eta = \tfrac{1}{2}\):

\[ \theta = 7.5 \text{ units}, \qquad \sigma_{D(L)} = 1.94\sqrt{2} = 2.75 \text{ units} \]

Earlier in the chapter, from the Poisson assumption, we got 7.5 and 2.74.

That Agreement Is Not an Accident

A Poisson demand averaging 3.75 a month has a mean absolute deviation of 1.5502 units.

\[ \sqrt{\pi/2}\,(1.5502) = 1.9429 \qquad\text{against}\qquad \sqrt{3.75} = 1.9365 \]

The conversion is 0.33% high, and it introduces nothing else.

That check is worth performing whenever a forecasting system’s numbers first replace a fitted distribution’s, because it prices the conversion before the policy depends on it.

What the Exponent Does to the Same Item

At \(\eta = \tfrac{1}{2}\): \(\sigma_{D(L)} = 2.75\) units.

At \(\eta = 1\): \(\sigma_{D(L)} = 1.94(2) = 3.89\) units.

42% higher, and the safety stock rises with it.

If you take \(\eta = \tfrac{1}{2}\) because it is the familiar square root rule, you should be able to say why the forecast errors on this item are independent.

Which Parameters Move, and How Often

The fixed order cost is normally the same for a whole group. It is a property of the ordering process, not of the item, so it changes when the process changes.

The holding cost follows the item’s value, since \(h = ic\). A repriced item has a new \(h\) whether or not anyone recomputed one.

The lead time varies by item, and we saw that its variance can contribute more to \(\mathit{Var}[D(L)]\) than the demand does.

Recomputing the Policy

With \(\lambda\), \(\theta\) and \(\sigma_{D(L)}\) in hand, recompute exactly as the classical approximation did the first time.

  1. \(Q\) from the EOQ formula at the current \(\lambda\)
  2. Fit a family to \(\theta\) and \(\sigma_{D(L)}\) by moment matching
  3. Set \(r\) from the fill rate target, or from the constrained program where the target has to be met exactly

Nothing here is a new model. It is the classical approximation with its inputs refreshed.

The Two Parameters Do Not Deserve Equal Attention

Recall that the total cost is flat near the economic order quantity. A \(Q\) computed from a stale \(\lambda\) costs very little.

The reorder point has no such tolerance. It sits in the tail of \(D(L)\), where a small shift in \(\theta\) or \(\sigma_{D(L)}\) moves the fill rate visibly.

Recompute \(r\) on the forecast’s own cycle.

Recompute \(Q\) when \(\lambda\) has moved enough to matter.

Where the Chapter Landed

  • The policy is exposed to exactly one random quantity
  • The position controls; the net inventory costs
  • \(Q = 1\) is the newsvendor; general \(Q\) is that averaged over a band
  • The classical approximation is wrong in two directions at once
  • A service target is a shortage cost stated without saying so
  • Items couple through what they share, not through the physics
  • An average target met equally is the expensive way to meet it
  • The parameters are forecasts, and \(r\) is the one that cannot go stale

Throughout, the lead time was a number the supplier quoted.

Next chapter: what happens when the supplier is a stock point of your own.

⌂ Index