447. Base Stock

447.1. (S−1, S) Policy — base stock / one-for-one

The simplest continuous-review policy: every consumed unit triggers an immediate replenishment of one unit. Sometimes called the base-stock policy.

Decision rule: maintain inventory position at exactly 𝑆. As soon as one unit is sold, place an order for one unit.

Equivalently: trigger an order at 𝑠=𝑆1 (whenever inventory dips below 𝑆). Hence the name.

Single parameter:

447.1.1. When does this make sense?

Use base-stock when fixed ordering cost is negligible (or items are too critical to risk by batching):

Don’t use base-stock if you have meaningful per-order setup costs — the EOQ logic says batch up.

447.1.2. Inventory position vs. on-hand

In (S−1, S):

If demand during lead time is 𝐷𝐿, outstanding orders just before the next consumption is exactly 𝐷𝐿. So:

On-hand=(𝑆𝐷𝐿)+

Stockouts occur when 𝐷𝐿>𝑆.

447.1.3. Set 𝑆 — Newsvendor style

Choose 𝑆 to balance holding cost vs. shortage cost.

For Poisson lead-time demand 𝐷𝐿Poisson(𝜇𝐿):

𝑆=smallest integer with 𝑃(𝐷𝐿𝑆)CR

Critical ratio: CR=𝐶𝑢/(𝐶𝑢+𝐶𝑜) where 𝐶𝑢 is shortage cost per unit, 𝐶𝑜 is holding cost per unit per cycle.

For a cycle service-level requirement (probability of no stockout in lead time = 1𝛼):

𝑆=𝜇𝐿+𝑧𝜎𝐿(normal approximation)

For Poisson: 𝜎𝐿=𝜇𝐿, so 𝑆𝜇𝐿+𝑧𝜇𝐿.

447.1.4. Average inventory

Steady-state expected on-hand:

𝐸[on-hand]=𝐸[(𝑆𝐷𝐿)+]=𝑆𝜇𝐿+𝜎𝐿𝐿(𝑧)

where 𝐿(𝑧)=𝜑(𝑧)𝑧(1Φ(𝑧)) is the standard normal loss function (see [expected_profit.typ](../newsvendor/expected_profit.typ)).

Annual holding cost: 𝐸[on-hand].

447.1.5. Final formulas

𝑆=𝜇𝐿+𝑧𝜎𝐿SS=𝑧𝜎𝐿𝐸[on-hand]𝑆𝜇𝐿+𝜎𝐿𝐿(𝑧)
Example

Given (same policy-comparison params, but interpret as low-volume spare-part regime):

  • Demand: 𝑑=1 unit / day (Poisson) — instead of 33/day to make the spare-part case realistic
  • Lead time: 𝐿=14 days
  • Service level: 95% → 𝑧=1.645

Lead-time demand: 𝐷𝐿Poisson(𝜇𝐿=14), 𝜎𝐿=143.74.

Step 1 — base-stock level

Normal approximation:

𝑆=𝜇𝐿+𝑧𝜎𝐿=14+1.6453.7420units

Exact (Poisson lookup): smallest 𝑆 with 𝑃(𝐷𝐿𝑆)0.95.

  • 𝑃(𝐷𝐿19)0.923
  • 𝑃(𝐷𝐿20)0.952
  • 𝑆=20.

Step 2 — interpret

Maintain inventory position at 20 at all times. Every time a unit is consumed, immediately reorder one. Average backlog of in-transit orders is 𝜇𝐿=14. Average on-hand:

𝐸[on-hand]2014=6units (plus loss-function correction)

Step 3 — what if demand drops to 1 unit permonthinstead of per day?

𝜇𝐿=14(130)0.47, 𝜎𝐿=0.470.68.

  • 𝑆=0.47+1.6450.681.62 (round up).
  • Most of the time, on-hand = 2; very occasional stockouts.

Compare to (Q, r)

In the high-volume case (𝑑=33/day): (Q, r) gives 𝑟=493, 𝑄=775. Base-stock would give 𝑆=493, but with 𝑆1=492 as the trigger — meaning 15 orders per day on average. Per-order cost dominates → use (Q, r).

In the low-volume spare-part case (𝑑=1/day): per-order cost is moot (warehouse already has the receiving infrastructure), and base-stock’s responsiveness wins. (S−1, S) is the right choice.

Rule of thumb: base-stock is optimal when 𝑆setup0 and converges to 𝑟 (no batching). For any non-trivial setup cost, batched policies (Q, r) or (s, S) reduce per-unit ordering cost.