Where the Stock Sits: Repairable Items

Manuel D. Rossetti, PhD P.E.

Agenda

  • The stock positioning problem, and why two locations are enough
  • Repairable items, and why they are managed one unit at a time
  • The two-echelon system: storerooms, a depot, and the one delay that couples them
  • Palm’s theorem, and the transformer’s pipeline at one storeroom
  • One location solved by substitution, and what one more unit buys

From One Location to Two

Recall that the multi-item chapter introduced echelon inventory when demand was known. This chapter keeps the structures and lets demand be random.

The continuous review chapter solved one location and took the lead time as a property of the supplier, a number purchasing could quote. That is the assumption this chapter removes.

When the supplier is itself a stocking location, its lead time is not a quoted constant. It is an outcome of its own inventory policy, and it gets worse exactly when the supplier is short.

We work that coupling in its simplest setting: repairable items, one unit at a time. Then the demand a location passes up is its own demand, arrival for arrival, and nothing stands between the two levels except the supplier’s ability to fill.

Where Should the Stock Sit?

The stock positioning problem: before any policy is set, which locations hold an item at all, and which location replenishes which?

It sits above the policy models, and it cannot be separated from them. Solve the policy problem for a forward location, and if the answer is to hold no units, the model is telling you the location should not be a stocking point.

The answer to “how much” also answers “whether”. That organizes the chapter.

Why two locations are enough. The comparison of one location against two, where one supplies the other, contains every essential feature: whether forward stock is worth holding, what the supplier owes its customers, and the interaction. A network is a collection of such pairs.

That is the two-echelon inventory system, and it is the reduction such organizations take in practice. This book does not solve many layers at once, and it does not have to in order to be useful.

What Changes When Stock Moves Forward

Three things change at once, and they do not point the same way.

  • Faster. A unit at a supported site is issued immediately; one at a distribution center must be picked, packed and shipped.
  • Less pooled, so more of it. Recall that \(n\) independent streams pool to a mean that grows like \(n\) and a standard deviation that grows like \(\sqrt{n}\). Splitting stock across ten sites gives that up.
  • Still backed. The supplying location faces demand from the sites it supports and still needs a policy.

Thus, positioning trades responsiveness against the investment needed to achieve it, and the trade is not obvious in either direction.

Stock fast movers forward, slow movers and expensive items centrally: usually right, not always. Use the rules of thumb to choose which items to analyze, not as the analysis.

The Item Comes Back

A pad-mount transformer that fails is pulled, a serviceable unit is installed, and the failed unit is rewound, retested and returned to stock. At $3,800 that is worth doing. An item managed this way is a repairable item; Sherbrooke calls it a recoverable item.

A failure is two events at once: a demand for a serviceable unit and an arrival of an unserviceable one, at the same instant.

One for one is not a policy choice here. The repair pipeline is fed by failures, one at a time, and no ordering cost stands between a failure and its induction that waiting could amortize.

The population is fixed. The day-to-day question is not how much to buy but where the units the system already owns should sit.

Not a contradiction

As a consumable the transformer has an EOQ:

\[ Q^{*} = \sqrt{\frac{2(220)(45)}{950}} = \sqrt{20.84} = 4.57 \]

which rounds to five. As a repairable it has no batching decision at all.

A serviceable unit is ready to issue. An unserviceable unit, a carcass, has failed and awaits or is in repair. Every unit is exactly one of the two.

The Two Levels

The forward locations are storerooms and the central one is the depot. Sherbrooke’s literature says base; this course keeps base-stock for the policy.

Failures arrive at storeroom \(j\) at rate \(\lambda_j\). A fraction \(\phi_j\) is rebuilt locally in an average \(T_j\). The rest go up to the depot, which ships a serviceable after an order and ship time \(O_j\) plus whatever the request waits there, \(W_j\), and rebuilds in an average \(T_0\).

Notice that no arrow leaves the figure and none enters it: the fixed population.

Notation, and Two Rates

The depot is \(0\) and the storerooms are \(j = 1, \ldots, J\). Let \(\lambda_j\) represent the failure rate at storeroom \(j\), Poisson; \(\phi_j\) the fraction it repairs; \(T_j\), \(O_j\), \(T_0\) the average times above; and \(S_j\), \(S_0\) the stock levels, the units each location holds when nothing is in resupply.

\[ \begin{aligned} \lambda_{j0} &= (1 - \phi_j)\lambda_j &&\text{storeroom } j \text{'s requests to the depot}\\ \lambda_0 &= \sum_{j=1}^{J}(1 - \phi_j)\lambda_j &&\text{the depot's demand rate} \end{aligned} \]

The requests arrive one at a time, at the instants of the failures, and a thinned Poisson process is Poisson. Thus, the depot faces Poisson demand.

For example, \(\lambda_j = 45\) failures a year with three in ten rebuilt locally: \(\lambda_{j0} = 0.7(45) = 31.5\) requests a year. Four such storerooms: \(\lambda_0 = 4(31.5) = 126\).

What Is Being Measured

The continuous review chapter priced a waiting crew with \(b\). For the systems this chapter is aimed at, that figure is usually not available.

A repairable part is a component of a system: an aircraft, a locomotive, a substation. A missing part does not cost money directly; it grounds the aircraft. What the organization cares about is availability, the fraction of its systems not down for parts, and availability is driven by backorders at the storerooms.

The objective is stated in backorders, and money moves into a budget constraint: spend a fixed sum across many items to make total expected backorders as small as possible.

Let \(\bar{B}_j(S_j)\) represent the expected backorders outstanding at storeroom \(j\) when it holds \(S_j\). Everything this chapter computes serves that one quantity.

Palm’s Theorem

Recall that net inventory is the stock level less the units in resupply. A repair pipeline is not as obliging as a constant lead time: repair times vary by an order of magnitude, and the shop does not finish jobs in order.

Palm’s theorem (Palm, 1938)

Failures occur in a Poisson process at rate \(\lambda\), and each starts a resupply activity whose duration is drawn independently from a distribution with mean \(T\). Let \(X\) represent the number in progress at a random instant in steady state. Then

\[ P\{X = x\} = \frac{e^{-\lambda T}(\lambda T)^{x}}{x!}, \qquad x = 0, 1, 2, \ldots \]

whatever the distribution of the duration may be.

Only the mean repair time enters. Not its variance, not its shape. Repair time data is the worst data in this business: a shop can tell you its average flow time and rarely its distribution. Palm’s theorem says use the average and stop.

When Palm’s Theorem Applies

Do not read this as “lead time variability never matters”

The continuous review chapter showed a random lead time inflating lead time demand variance by \(\mathit{Var}[L](E[D])^{2}\). Both are right. The separating question: can an activity started later finish earlier? Under one common lead time it cannot, and one long draw stretches everything in the pipe. In a repair shop it can, so variability averages away between units.

Three conditions carry the theorem, and the third is the one that fails in practice:

  1. Failures arrive in a Poisson process.
  2. Durations are drawn independently, one per failure.
  3. Repair capacity never binds. Infinitely many servers: a carcass starts repair the instant it arrives. With three test benches and twelve carcasses, the later ones wait, and the theorem no longer applies.

Thus, the model suits a shop sized comfortably above its workload, and it will understate the pipeline of one that is not.

The Pipeline at a Storeroom

Each route a carcass takes is a thinning of the failure stream, so each is Poisson, and the two are independent:

\[ \begin{aligned} \text{local repair:}\quad &\text{rate } \phi_j\lambda_j, \text{ mean duration } T_j &&\text{Palm: Poisson, mean } \phi_j\lambda_jT_j\\ \text{via the depot:}\quad &\text{rate } (1-\phi_j)\lambda_j, \text{ mean } O_j + \bar{W}_j &&\text{Palm: Poisson, mean } (1-\phi_j)\lambda_j(O_j + \bar{W}_j)\\ \mu_j &= \phi_j\lambda_j T_j + (1-\phi_j)\lambda_j\left(O_j + \bar{W}_j\right) &&\text{independent Poissons add} \end{aligned} \]

where \(\bar{W}_j = E[W_j]\) represents the average wait a request suffers at the depot.

This is the chapter in one line. Every quantity in it is measurable except \(\bar{W}_j\), which is produced by the depot’s stock decision. The storeroom’s pipeline, its backorders, and the availability of the systems it supports all depend on a decision made at the depot.

This uses Palm slightly outside its warrant. Two requests arriving while the depot is short both wait on the same missing units, so the durations are not independent. METRIC adopts the formula anyway; VARI-METRIC repairs it.

The Transformer Pipeline at One Storeroom

\(\lambda_j = 45\) a year; \(\phi_j = 0.3\) rebuilt locally in \(T_j = 30\) days; the depot ships in \(O_j = 10\) days. Take \(\bar{W}_j = 0\) for now, a depot that never makes anyone wait.

\[ \begin{aligned} \phi_j\lambda_j T_j &= (0.3)(45)\left(\tfrac{30}{365}\right) = 1.1096\\ (1-\phi_j)\lambda_j O_j &= (0.7)(45)\left(\tfrac{10}{365}\right) = 0.8630\\ \mu_j &= 1.1096 + 0.8630 = 1.9726 \text{ units} \end{aligned} \]

The check. One rate times one average duration: \((0.3)(30) + (0.7)(10) = 16\) days, and \(45(16/365) = 1.9726\).

About two transformers are away being fixed at any moment; the count is Poisson, standard deviation \(\sqrt{1.9726} = 1.4045\).

A single spare is on the shelf exactly when nothing is away:

\[ P\{X = 0\} = e^{-1.9726} = 0.1391 \]

fourteen crews in a hundred. That is why the storeroom stocks more than one.

What the Depot’s Stock Does to This

Suppose the depot is thin enough that a request waits \(\bar{W}_j = 15\) days on average. What happens to this storeroom’s pipeline?

Only the second term moves:

\[ \begin{aligned} (1-\phi_j)\lambda_j\left(O_j + \bar{W}_j\right) &= 31.5\left(\tfrac{10 + 15}{365}\right) = 2.1575\\ \mu_j &= 1.1096 + 2.1575 = 3.2671 \text{ units} \end{aligned} \]

an increase of 65.6%. The check: \((0.3)(30) + (0.7)(25) = 26.5\) days, and \(45(26.5/365) = 3.2671\).

The storeroom did nothing. Its failure rate, its shop and its stock level are unchanged. A decision at the depot raised its transformers in the air by two thirds, and it will have to hold more units to absorb it. That is the coupling.

One Location Is a Substitution

The base-stock derivation used two facts: the position is held at \(S\), and the units outstanding are those whose resupply has not finished. Neither says what the resupply is. Writing \(X_j\) for the units in resupply,

\[ \mathit{IN}_j = S_j - X_j, \qquad X_j \sim \text{Poisson}(\mu_j) \]

and every base-stock measure transfers by renaming the random variable:

\[ \begin{aligned} \bar{B}_j(S_j) &= E\left[(X_j - S_j)^{+}\right] = G^{1}(S_j) &&\text{expected backorders}\\ \bar{I}_j(S_j) &= S_j - \mu_j + G^{1}(S_j) &&\text{expected on hand}\\ \overline{\mathit{RR}}_j(S_j) &= P\{X_j \le S_j - 1\} = G(S_j - 1) &&\text{ready rate} = \text{fill rate} \end{aligned} \]

Notice the on-hand formula is an identity: \(\bar{I}_j - \bar{B}_j = S_j - \mu_j\). That is the arithmetic check on any table of these quantities.

What One More Unit Buys

Let \(\Delta_j(S_j)\) represent the backorders removed by the \((S_j + 1)\)st unit:

\[ \begin{aligned} \Delta_j(S_j) &= \bar{B}_j(S_j) - \bar{B}_j(S_j + 1) &&\text{definition}\\ &= \sum_{x \ge S_j} G^{0}(x) - \sum_{x \ge S_j + 1} G^{0}(x) &&G^{1}(b) = \textstyle\sum_{x \ge b}G^{0}(x)\\ &= G^{0}(S_j) = P\{X_j > S_j\} &&\text{one term left} \end{aligned} \]

Read it as a sentence. The next unit removes a backorder exactly when the pipeline would otherwise have exceeded the stock, so its value is the probability that it does.

\(G^{0}\) is nonincreasing, so \(\Delta_j\) shrinks as \(S_j\) grows: diminishing returns, which is the same as \(\bar{B}_j\) being convex in \(S_j\). A greedy rule that buys whichever unit removes the most backorders per dollar works only because the units get worse as you buy them.

Stocking One Storeroom with Transformers

\(\mu_j = 1.9726\), a generous depot. How many should the storeroom hold?

\(S_j\) \(G(S_j)\) \(\bar{B}_j\) \(\bar{I}_j\) \(\overline{\mathit{RR}}_j\) \(\Delta_j\)
0 0.1391 1.9726 0.0000 0.0000 0.8609
1 0.4135 1.1117 0.1391 0.1391 0.5865
2 0.6841 0.5252 0.5526 0.4135 0.3159
3 0.8620 0.2093 1.2367 0.6841 0.1380
4 0.9498 0.0713 2.0987 0.8620 0.0502
5 0.9844 0.0211 3.0485 0.9498 0.0156
6 0.9958 0.0055 4.0329 0.9844 0.0042

The check. At \(S_j = 3\), \(\bar{I}_j - \bar{B}_j = 1.2367 - 0.2093 = 1.0274\), and \(S_j - \mu_j = 3 - 1.9726 = 1.0274\).

The marginal check. \(\Delta_j(2) = 1 - G(2) = 0.3159\), and \(0.5252 - 0.2093 = 0.3159\).

Read the \(\Delta_j\) column down. The first transformer removes 0.86 backorders, the second 0.59, the third 0.32, the fifth only 0.016. At $3,800 the fifth buys almost nothing.

Validation, and Where It Stops

Against a closed form. If a shortage cost were available, the answer would be the critical ratio, since this is the base-stock model and the base-stock model is the newsvendor. With \(h = \$950\) and \(b = \$8{,}550\), the ratio is \(8550/9500 = 0.90\), and the first \(G(S_j) \ge 0.90\) is \(0.9498\) at \(S_j = 4\). Four transformers, and the marginal column agrees the fourth is the last that buys much.

Where it stops applying. The critical ratio needs \(b\), and these systems cannot state it. It also treats this storeroom alone, when the $3,800 competes against every other item at every other storeroom.

Both objections have one answer: rank marginal buys against a budget instead of pricing shortages. That is the last session of this chapter.

What We Did Today

Positioning is answered by policy. A forward location whose best stock is zero should not be a stocking point.

Repairables are one for one by nature, and the population is fixed, so the only question is where the units sit.

Palm’s theorem: the pipeline is Poisson with mean \(\lambda T\), whatever the repair time distribution, provided capacity never binds.

The storeroom’s pipeline depends on the depot’s wait. A 15-day wait raised the transformer’s pipeline by 65.6% without the storeroom doing anything.

One location is base stock with a Poisson pipeline, and the next unit is worth \(P\{X_j > S_j\}\) backorders.

For Next Time

Read before next session: Working Two Levels by Hand and The Delay the Depot Imposes.

Today’s material was the opening of the chapter through A Single Location Under One-for-One Ordering.

Next session:

  • A depot and a storeroom run together by hand, one event at a time, until the wait appears
  • The depot as a single location, and its backorders turned into a wait by Little’s Law
  • What one unit at the depot buys for four storerooms at once

Bring Little’s Law. It turns the depot’s backorders into \(\bar{W}_j\).

⌂ Index