448. (s, S)

Continuous review, order-up-to 𝑆. Generalizes (Q, r): instead of always ordering the same Q, top up to a target level.

Decision rule: monitor inventory continuously. When inventory position drops to (or below) the reorder point 𝑠, order enough to bring inventory position back up to 𝑆.

Two parameters:

The actual order quantity varies: 𝑄actual=𝑆(inventory position when triggered). If inventory drops exactly to 𝑠 before triggering, 𝑄actual=𝑆𝑠. If demand causes a drop below 𝑠 (overshoot), 𝑄actual>𝑆𝑠.

448.0.1. Setup

Same as (Q, r): demand rate 𝑑 with std 𝜎𝑑, lead time 𝐿, costs 𝑆setup,, service level 𝑧.

448.0.2. Difference from (Q, r)

(Q, r) commits to a fixed batch 𝑄 every order — doesn’t matter if inventory dropped to exactly 𝑟 or much below. (s, S) compensates: if inventory overshoots downward, the order is larger to make up.

In practice, with continuous review and small per-period demand (smooth depletion), the two are nearly identical. Differences emerge under lumpy demand — large discrete withdrawals can drop inventory well below 𝑠 in one go.

448.0.3. Set 𝑠

Same logic as 𝑟 in (Q, r):

𝑠=𝜇𝐿+𝑧𝜎𝐿

448.0.4. Set 𝑆

For large fixed cost (most cases), 𝑆𝑠 should approximately equal the EOQ:

𝑆=𝑠+𝑄EOQ=𝑠+2𝐷𝑆setup

Why: when inventory drops exactly to 𝑠 (no overshoot), this gives the same order quantity as (Q, r). When it overshoots, the order grows automatically.

For low/zero fixed cost: 𝑆=𝑠 (order one unit at a time — the “base stock” / (S-1, S) policy in the limit; see [base_stock.typ](base_stock.typ)).

448.0.5. Final formulas

𝑠=𝜇𝐿+𝑧𝜎𝐿𝑆=𝑠+2𝐷𝑆setupSS=𝑧𝜎𝐿

Average inventory under (s, S) is slightly higher than (Q, r) because of the overshoot correction — but only by an amount proportional to expected overshoot per cycle, usually small.

Example

Given (same policy-comparison params):

  • 𝐷=12000/yr, 𝑑=33/day, 𝜎𝑑=5, 𝐿=14 days
  • 𝑆setup = $50, = $2/unit/yr, 𝑧=1.645
  • Demand assumed smooth (small per-period withdrawals)

Step 1 — reorder point

𝑠=𝜇𝐿+𝑧𝜎𝐿=462+30.8493

Identical to 𝑟 in (Q, r).

Step 2 — order-up-to level

𝑄EOQ=212000502775𝑆=𝑠+𝑄EOQ=493+7751268units

Step 3 — order quantity per trigger

Whenever inventory position drops to (or below) 493, order:

𝑄actual=1268current position
  • If position is exactly 493 at the moment of trigger: order 1268493=775 (same as EOQ).
  • If position is 480 (overshot below 493 due to a lumpy demand): order 1268480=788 (slightly larger to compensate).

Compare to (Q, r)

Under smooth demand:

  • (Q, r): 𝑄=775 exactly, 𝑟=493.
  • (s, S): 𝑆𝑠=775, expected order 775, so essentially the same numbers.

Difference appears under lumpy demand: if a single customer order suddenly removes 100 units, dropping inventory from 540 to 440:

  • (Q, r) orders 775. New inventory position: 440+775=1215.
  • (s, S) orders 1268440=828. New inventory position: 1268 (back to target).

(s, S) restores the target every time; (Q, r) just adds the same fixed batch. Use (s, S) when demand is lumpy or when you have a target inventory budget.