Deterministic Lot Sizing: One Cycle, Every Model

Manuel D. Rossetti, PhD P.E.

Agenda

  • One general model that contains every classical result
  • One cycle, four segments, derived from two rates
  • Average inventory and average backorders, from triangles
  • One cycle worked by hand, with two checks
  • The total cost rate, including the trap in counting units short
  • The classical models as special cases: planned backorders and the production quantity derived

One Item, Everything Known

Recall the two questions: how much to order, and when. We answer them for the simplest interesting case, in which demand is known and constant, and so is everything else. Rather than four models, we build one and switch assumptions off.

A single item at a single location. Let

  • \(\lambda\) represent the demand rate, known and constant;
  • \(p\) the replenishment rate, also known, with \(p > \lambda\);
  • \(Q\) the order quantity, a decision;
  • \(\hat{B}\) the maximum backorder level, the depth the system may run short, a decision.

Unsatisfied demand is backordered, not lost, and every cycle is identical to the last.

Bar for average, hat for maximum

\(\bar{I}\) and \(\bar{B}\) are time averages; \(\hat{I} = \max_t I(t)\) and \(\hat{B} = \max_t B(t)\) are peaks within a cycle. The peak \(\hat{B}\) is a decision; the average \(\bar{B}\) is a consequence of it.

One Cycle, Four Segments

Net inventory starts at \(-\hat{B}\) and climbs at the net rate \(p - \lambda\) while replenishment runs. It crosses zero when the backorders are filled, then reaches the peak \(\hat{I}\). Replenishment stops, it falls at \(\lambda\), crosses zero when the shelf empties, and returns to \(-\hat{B}\). Notice that only two slopes appear anywhere.

The Peak and the Segments

Let \(T_p\) represent the replenishment period and \(T_1, \ldots, T_4\) the four segments:

\[ \begin{aligned} Q &= p\,T_p \;\Rightarrow\; T_p = Q/p &&\text{$Q$ produced at rate } p\\ \hat{I} + \hat{B} &= (p - \lambda)T_p = (p - \lambda)\frac{Q}{p} &&\text{climb from $-\hat{B}$ to $\hat{I}$ at the net rate}\\ \hat{I} &= Q\left(1 - \frac{\lambda}{p}\right) - \hat{B} &&\text{solve for the peak}\\ T_1 = \frac{\hat{B}}{p - \lambda}, \quad T_2 &= \frac{\hat{I}}{p - \lambda}, \quad T_3 = \frac{\hat{I}}{\lambda}, \quad T_4 = \frac{\hat{B}}{\lambda} &&\text{each distance over its rate}\\ T &= T_1 + T_2 + T_3 + T_4 = Q/\lambda &&\text{the time to consume } Q \end{aligned} \]

Notice the factor \((1 - \lambda/p)\): the fraction of each order that survives to become stock, the rest consumed while it was still being produced. An item produced at twice its demand rate keeps half of each order.

Average Inventory and Backorders

The integrands are triangles, so the integrals are areas: on hand, height \(\hat{I}\) on base \(T_2 + T_3\); backorders, height \(\hat{B}\) on base \(T_1 + T_4\).

\[ \begin{aligned} \bar{I} &= \frac{1}{T}\cdot\frac{\hat{I}}{2}(T_2 + T_3) &&\text{triangle area over the cycle}\\ T_2 + T_3 &= \frac{\hat{I}}{p - \lambda} + \frac{\hat{I}}{\lambda} = \frac{\hat{I}\,p}{\lambda(p - \lambda)} &&\text{common denominator}\\ \bar{I} &= \frac{\lambda}{Q}\cdot\frac{\hat{I}}{2}\cdot\frac{\hat{I}\,p}{\lambda(p - \lambda)} = \frac{\hat{I}^{2}}{2Q\left(1 - \frac{\lambda}{p}\right)} &&1/T = \lambda/Q; \;\; p/(p - \lambda) = 1/(1 - \lambda/p)\\ \bar{B} &= \frac{\hat{B}^{2}}{2Q\left(1 - \frac{\lambda}{p}\right)} &&\text{the same steps with } \hat{B} \end{aligned} \]

With \(\hat{I} = Q(1 - \lambda/p) - \hat{B}\), both averages are closed forms in the two decisions.

Working One Cycle

\(\lambda = 100\) units a year, \(p = 250\), \(Q = 400\), \(\hat{B} = 30\); so \(p - \lambda = 150\).

\[ \begin{aligned} \hat{I} &= 400\left(1 - \tfrac{100}{250}\right) - 30 = 400(0.6) - 30 = 210 &&\text{the peak}\\ T_1 &= 30/150 = 0.2, \quad T_2 = 210/150 = 1.4 &&\text{at the net rate}\\ T_3 &= 210/100 = 2.1, \quad T_4 = 30/100 = 0.3 &&\text{at the demand rate}\\ T_1 + T_2 + T_3 + T_4 &= 4.0 = Q/\lambda = 400/100 &&\textit{the first check} \end{aligned} \]

You should perform that check every time, because it catches most algebra errors immediately.

The Averages, Two Ways

From the areas:

\[ \bar{I} = \tfrac{1}{4}\cdot\tfrac{210}{2}(1.4 + 2.1) = \tfrac{1}{4}(105)(3.5) = 91.875, \qquad \bar{B} = \tfrac{1}{4}\cdot\tfrac{30}{2}(0.2 + 0.3) = \tfrac{1}{4}(15)(0.5) = 1.875 \]

From the closed forms, with \(Q(1 - \lambda/p) = 240\):

\[ \bar{I} = \frac{210^{2}}{2(240)} = \frac{44{,}100}{480} = 91.875, \qquad \bar{B} = \frac{30^{2}}{2(240)} = \frac{900}{480} = 1.875 \]

The second check: the two routes agree.

A backorder allowance of 30, a seventh of the peak, gives an average under two. The system is short for \(T_1 + T_4 = 0.5\) year of every four, so the backorder triangle is short as well as low. Do not read a maximum backorder level as though it described the usual state of the system.

The Total Cost Rate

Each term is a price times a quantity the cycle produces:

Term Price Quantity Cost rate
Ordering \(k\) per order \(\lambda/Q\) orders per year \(k\lambda/Q\)
Purchasing \(c\) per unit \(\lambda\) units per year \(c\lambda\), independent of the decisions
Holding \(h\) per unit-year \(\bar{I}\) \(h\bar{I}\)
Backordering \(b\) per unit-year \(\bar{B}\) \(b\bar{B}\)
Stockout \(\pi\) per unit short units short per year below

The units short in a cycle are not \(\hat{B}\). Demand keeps arriving while the queue drains, so over \(T_1\) another \(\lambda T_1\) join it:

\[ \lambda(T_4 + T_1) = \lambda\left(\frac{\hat{B}}{\lambda} + \frac{\hat{B}}{p - \lambda}\right) = \hat{B}\,\frac{p}{p - \lambda} = \frac{\hat{B}}{1 - \frac{\lambda}{p}}, \qquad\text{times } \frac{\lambda}{Q} \text{ cycles a year.} \]

Optimizing the General Model

\[ \mathit{TC}(Q, \hat{B}) = \frac{k\lambda}{Q} + c\lambda + h\,\frac{\left[Q\left(1-\frac{\lambda}{p}\right) - \hat{B}\right]^{2}}{2Q\left(1-\frac{\lambda}{p}\right)} + b\,\frac{\hat{B}^{2}}{2Q\left(1-\frac{\lambda}{p}\right)} + \frac{\pi\hat{B}\lambda}{Q\left(1-\frac{\lambda}{p}\right)} \]

Setting both partial derivatives to zero and solving the pair:

\[ Q^{*} = \sqrt{\frac{h+b}{b}}\; \sqrt{\frac{2k\lambda}{h\left(1-\frac{\lambda}{p}\right)} - \frac{(\pi\lambda)^{2}}{h(h+b)\left(1-\frac{\lambda}{p}\right)^{2}}}, \qquad \hat{B}^{*} = \frac{hQ^{*}\left(1-\frac{\lambda}{p}\right) - \pi\lambda}{h+b} \]

Two features before we specialize. The factor \(\sqrt{(h+b)/b}\) exceeds one and grows as \(b\) falls: cheaper backordering means larger orders. And \(\hat{B}^{*}\) turns on \(h/(h+b)\), the trade-off the newsvendor’s critical ratio expresses later in the course.

A large \(\pi\) makes the inner root negative, and a little below that \(\hat{B}^{*} < 0\). The stationary point is then outside the feasible region and the optimum is \(\hat{B} = 0\). With \(\lambda = 100\), \(p = 250\), \(k = 20\), \(h = 4\), \(b = 6\), it happens by \(\pi = 1\). A high enough price on being short means the answer is never to be short.

The Classical Models as Special Cases

Assumptions Model Order quantity
\(p\) finite, backorders, both \(\pi\) and \(b\) General as above
\(p\) finite, backorders, \(\pi = 0\) General, no expedite charge \(\sqrt{\dfrac{h+b}{b}}\sqrt{\dfrac{2k\lambda}{h\left(1-\frac{\lambda}{p}\right)}}\)
\(p\) finite, no backorders Economic production quantity \(\sqrt{\dfrac{2k\lambda}{h\left(1-\frac{\lambda}{p}\right)}}\)
\(p \to \infty\), backorders, \(\pi = 0\) EOQ with planned backorders \(\sqrt{\dfrac{h+b}{b}}\sqrt{\dfrac{2k\lambda}{h}}\)
\(p \to \infty\), no backorders Classical EOQ \(\sqrt{\dfrac{2k\lambda}{h}}\)

Every classical result is the general model with something switched off. Instantaneous replenishment is \(p \to \infty\), so \(\lambda/p \to 0\), the surviving fraction becomes one, \(T_p\) becomes zero, and the climb in the cycle becomes vertical.

No Charge Per Unit Short

With \(\pi = 0\), let \(a = 1 - \lambda/p\); the relevant cost is \(k\lambda/Q + [h(Qa - \hat{B})^{2} + b\hat{B}^{2}]/(2Qa)\).

\[ \begin{aligned} \frac{\partial \mathit{TC}}{\partial \hat{B}} &= \frac{-h(Qa - \hat{B}) + b\hat{B}}{Qa} = 0 &&\text{best backorder level for this } Q\\ \hat{B} &= \frac{hQa}{h + b}, \qquad Qa - \hat{B} = \frac{bQa}{h + b} &&\text{a fixed share of the surviving order}\\ \mathit{TC}(Q) &= \frac{k\lambda}{Q} + \frac{hb^{2} + bh^{2}}{2(h+b)^{2}}\,Qa = \frac{k\lambda}{Q} + \frac{hb}{h + b}\cdot\frac{Qa}{2} &&\text{substitute back, factor } hb(h+b)\\ Q^{*} &= \sqrt{\frac{2k\lambda(h+b)}{hab}} = \sqrt{\frac{h+b}{b}}\sqrt{\frac{2k\lambda}{h\left(1 - \frac{\lambda}{p}\right)}} &&\text{an ordinary EOQ} \end{aligned} \]

That is, the best backorder level is the share \(h/(h+b)\) of the surviving part of the order, and what remains is an ordinary economic order quantity with holding rate \(ha\,b/(h+b)\). The factor \(\sqrt{(h+b)/b}\) is that reduced holding rate under the root.

No Backorders: the Production Quantity

Forbid shortages: \(\hat{B} = 0\), so \(\bar{B}\) and the stockout term vanish.

\[ \begin{aligned} \bar{I} &= \frac{\left[Q\left(1-\frac{\lambda}{p}\right)\right]^{2}}{2Q\left(1-\frac{\lambda}{p}\right)} = \frac{Q}{2}\left(1-\frac{\lambda}{p}\right) &&\text{half the peak}\\ \mathit{TC}(Q) &= \frac{k\lambda}{Q} + c\lambda + \frac{hQ}{2}\left(1-\frac{\lambda}{p}\right) &&\text{the EOQ with } h' = h(1 - \lambda/p)\\ -\frac{k\lambda}{Q^{2}} + \frac{h}{2}\left(1-\frac{\lambda}{p}\right) &= 0 \;\Rightarrow\; Q^{*} = \sqrt{\frac{2k\lambda}{h\left(1-\frac{\lambda}{p}\right)}} &&\text{the economic production quantity} \end{aligned} \]

How backorders are forbidden

Setting \(b = 0\) is wrong: a zero backorder cost makes shortages free, not forbidden, and the order quantity becomes unbounded. Forbidding them is the limit \(b \to \infty\): then \(\sqrt{(h+b)/b} \to 1\) and \(\hat{B}^{*} \to 0\), which recovers the production quantity exactly.

What We Did Today

One general cycle has four segments set by two rates, and its peak is \(Q(1 - \lambda/p) - \hat{B}\).

The averages are triangle areas: \(\bar{I} = \hat{I}^{2}/[2Q(1-\lambda/p)]\), and the same with \(\hat{B}\) for backorders.

Two checks: the segments sum to \(Q/\lambda\), and the areas match the closed forms.

Units short per cycle are \(\hat{B}/(1 - \lambda/p)\), not \(\hat{B}\).

Every classical model is the general one with something switched off. With \(\pi = 0\) the best backorder level is a share \(h/(h+b)\) of the surviving order, and forbidding backorders is \(b \to \infty\), never \(b = 0\).

For Next Time

Read before next session: The Classical Economic Order Quantity, Lead Time and the Reorder Point and Sensitivity of the Order Quantity.

Today’s material was The General Cycle through No Backorders.

Next session:

  • The classical economic order quantity worked end to end
  • When to order: the reorder point, including a lead time longer than a cycle
  • What a wrong order quantity costs, and what that flatness licenses

Bring the surviving fraction. Set it to one, and today’s production quantity becomes next session’s economic order quantity.

⌂ Index