Items from one supplier, on one truck, or run on one machine share part of the cost of replenishing, and that part is incurred once no matter how many items are on the order. Split the ordering cost in two:
Ordering each item independently pays \(K\) every time any item is replenished, \(n\) times over. Coordinating the orders pays it once.
Last session the coupling was a constraint and the cost functions stayed separate. Here the coupling is a cost, and the cost functions themselves are no longer separate.
Let \(T\) represent the base period, the time between order opportunities, and \(m_j\) a positive integer multiplier: item \(j\) is ordered every \(m_j\)th opportunity.
\[ \begin{aligned} \text{item $j$'s cycle} &= m_jT, \qquad Q_j = \lambda_jm_jT &&\text{its order covers its own cycle}\\ \text{major setup} &: K \text{ once per } T \;\Rightarrow\; K/T &&\text{every opportunity is used}\\ \text{minor setup} &: k_j \text{ once per } m_jT \;\Rightarrow\; k_j/(m_jT) &&\text{only when item $j$ is on it}\\ \text{holding} &: h_j\cdot\lambda_jm_jT/2 &&\text{average inventory } Q_j/2\\ C(T, \vec{m}) &= \frac{K}{T} + \sum_{j}\left[\frac{k_j}{m_j T} + \frac{h_j\lambda_j m_j T}{2}\right] &&\text{the relevant cost rate} \end{aligned} \]
\(T\) is continuous and the \(m_j\) are integers, so the problem is harder than anything in the economic order quantity chapter.
Independent ordering. Each item pays \(K + k_j\) on its own schedule, so its cost is \(\sqrt{2(K + k_j)h_j\lambda_j}\). This is the baseline.
A common cycle, every \(m_j = 1\). The cost collapses to two terms in \(T\):
\[ \begin{aligned} C(T) &= \frac{K + \sum_j k_j}{T} + \frac{\sum_j h_j\lambda_j}{2}\,T &&\text{the EOQ shape in } T\\ T^{*} &= \sqrt{\frac{2\left(K + \sum_j k_j\right)}{\sum_j h_j\lambda_j}}, \qquad C^{*} = \sqrt{2\Big(K + \sum_j k_j\Big)\sum_j h_j\lambda_j} &&\text{set the derivative to zero} \end{aligned} \]
Simple and often good, but wasteful when a slow-moving expensive item is dragged onto the frequency of a fast-moving cheap one.
Integer ratios, any positive integers. Once \(T\) is fixed the terms separate, and each item’s best continuous multiplier is
\[ m_j = \frac{1}{T}\sqrt{\frac{2k_j}{h_j\lambda_j}}, \]
the cycle item \(j\) would choose on its minor cost alone, measured in base periods. Round, search over \(T\), and the problem is solved to any accuracy wanted.
The answer is then a set of arbitrary integers, and that turns out to matter.
A power-of-two policy restricts every \(m_j = 2^{\ell_j}\), \(\ell_j = 0, 1, 2, \ldots\): items are ordered every base period, or every second, fourth, eighth, and so on.
Reason one: such schedules nest. If one item is ordered every 2 periods and another every 8, then whenever the slow item is due the fast one is too, because 2 divides 8. Multipliers of 3 and 5 coincide only every 15 periods, and in between are orders that carry one item and not the other.
Reason two: they cost almost nothing. That is a theorem, and it is what makes the restriction respectable instead of merely convenient.
Only the second reason is mathematical. The first is why power-of-two policies are used in practice at all: a nested schedule is one a receiving dock can run.
Fix \(T\) and follow one item, dropping its subscript. Let \(T_j = m_jT\) represent its reorder interval and \(g = h\lambda/2\) the holding coefficient. Since \(Q = \lambda T_j\):
\[ \begin{aligned} C(T_j) &= \frac{k\lambda}{\lambda T_j} + \frac{h\lambda T_j}{2} = \frac{k}{T_j} + gT_j &&\text{substitute } Q = \lambda T_j\\ C'(T_j) &= -\frac{k}{T_j^{2}} + g = 0 &&\text{the same two-term function}\\ T_j^{*} &= \sqrt{\frac{k}{g}} = \sqrt{\frac{2k}{h\lambda}} &&\text{the best interval}\\ C(T_j^{*}) &= \frac{k}{\sqrt{k/g}} + g\sqrt{\frac{k}{g}} = \sqrt{kg} + \sqrt{kg} = 2\sqrt{kg} &&\text{its cost} \end{aligned} \]
This is the economic order quantity with the decision variable renamed, and it is convex in \(T_j\).
\(C\) is convex, so the best \(\ell\) is the smallest one for which doubling again does not help, \(C(2^{\ell}T) \le C(2^{\ell+1}T)\):
\[ \begin{aligned} \frac{k}{2^{\ell}T} + g\,2^{\ell}T &\le \frac{k}{2^{\ell+1}T} + g\,2^{\ell+1}T &&\text{doubling does not help}\\ \frac{k}{2^{\ell}T}\left(1 - \frac{1}{2}\right) &\le g\,2^{\ell}T\,(2 - 1) &&\text{collect the $k$ terms and the $g$ terms}\\ \frac{k}{2g} &\le \left(2^{\ell}T\right)^{2} &&\text{multiply through by } 2^{\ell}T/g\\ 2^{\ell} &\ge \frac{\sqrt{k/g}}{\sqrt{2}\,T} = \frac{T_j^{*}}{\sqrt{2}\,T} &&\text{take square roots} \end{aligned} \]
So \(\ell^{*}\) is the smallest non-negative integer with \(2^{\ell} \ge T_j^{*}/(\sqrt{2}\,T)\). That is a formula, not a search: take \(\log_2\) of the right-hand side and round up.
The last line already says \(T_j = 2^{\ell^{*}}T \ge T_j^{*}/\sqrt{2}\). Because \(\ell^{*}\) is the smallest integer that works, the power before it was worse, \(C(2^{\ell^{*}-1}T) > C(2^{\ell^{*}}T)\). The same algebra on that inequality gives
\[ \begin{aligned} \frac{2k}{g} &> \left(2^{\ell^{*}}T\right)^{2} &&\text{the previous power was worse}\\ T_j &< \sqrt{2}\,\sqrt{k/g} = \sqrt{2}\,T_j^{*} &&\text{take square roots} \end{aligned} \]
and together
\[ \frac{T_j^{*}}{\sqrt{2}} \;\le\; T_j \;<\; \sqrt{2}\,T_j^{*} . \]
The rounded interval is never more than a factor of \(\sqrt{2}\) from the best one, in either direction. That bracket is the whole story.
\(C\) is convex, so its largest value over the bracket is at one of the two ends. Use \(T_j^{*} = \sqrt{k/g}\), so that \(k/T_j^{*} = gT_j^{*} = \sqrt{kg}\):
\[ \begin{aligned} C\!\left(\frac{T_j^{*}}{\sqrt{2}}\right) &= \frac{k\sqrt{2}}{T_j^{*}} + \frac{gT_j^{*}}{\sqrt{2}} = \sqrt{2}\sqrt{kg} + \frac{1}{\sqrt{2}}\sqrt{kg} &&\text{the lower end}\\ C\!\left(\sqrt{2}\,T_j^{*}\right) &= \frac{k}{\sqrt{2}\,T_j^{*}} + g\sqrt{2}\,T_j^{*} = \frac{1}{\sqrt{2}}\sqrt{kg} + \sqrt{2}\sqrt{kg} &&\text{the upper end: the same}\\ \frac{(\sqrt{2} + 1/\sqrt{2})\sqrt{kg}}{2\sqrt{kg}} &= \frac{3/\sqrt{2}}{2} = \frac{3}{2\sqrt{2}} = 1.0607 &&\text{divide by } C(T_j^{*}) = 2\sqrt{kg} \end{aligned} \]
A power-of-two policy costs at most 6.07% more than the best interval, whatever the item’s data and whatever the base period.
The derivation assumes \(\ell^{*} \ge 0\), which requires \(T \le \sqrt{2}\,T_j^{*}\). An item that wants to be ordered more often than the base period allows is stuck at \(\ell = 0\), and for that item the base period, not the rounding, governs the cost.
The base period may itself be a decision. Choosing it along with the multipliers improves the worst case from 6% to 2%. That sharper constant comes from treating the rounding error as spread across the items and averaging the penalty, with \(T\) left free to be optimized.
The 2% constant is also the one behind Roundy’s 98%-effective approximation for multi-stage systems (Roundy, 1985). The multi-echelon session uses the same rounding on chains and networks.
A plant can act on purchasing once a week, \(T = 1/52\) year. Two items from one supplier:
| Item | \(\lambda_j\) | \(h_j\) | \(k_j\) | \(g_j = h_j\lambda_j/2\) |
|---|---|---|---|---|
| Drive unit | 8,000 | $5.00 | $237 | 20,000 |
| Control arm | 6,000 | $4.00 | $300 | 12,000 |
\[ \begin{aligned} T^{*}_{\text{drive}} &= \sqrt{237/20{,}000} = 0.10886 \text{ yr} = 5.66 \text{ weeks} &&\text{times 52}\\ 2^{\ell} &\ge 5.66/\sqrt{2} = 4.003 \;\Rightarrow\; \ell \ge \log_2 4.003 = 2.001 \;\Rightarrow\; \ell^{*} = 3 &&\text{every 8 weeks}\\ T^{*}_{\text{arm}} &= \sqrt{300/12{,}000} = 0.15811 \text{ yr} = 8.22 \text{ weeks} &&\text{times 52}\\ 2^{\ell} &\ge 8.22/\sqrt{2} = 5.81 \;\Rightarrow\; \ell \ge 2.54 \;\Rightarrow\; \ell^{*} = 3 &&\text{every 8 weeks} \end{aligned} \]
Recall the penalty of using a quantity, or an interval, \(x\) times the best: \(C/C^{*} = \frac{1}{2}(x + 1/x)\).
\[ \begin{aligned} x_{\text{drive}} &= 8/5.66 = 1.4133, \qquad \tfrac{1}{2}(1.4133 + 0.7076) = 1.0604 &&\textbf{6.04\%}\text{: nearly the worst case}\\ C &: 2\sqrt{237 \times 20{,}000} = \$4{,}354.31 \;\to\; \$4{,}617.42 &&\text{times } 1.0604\\ x_{\text{arm}} &= 8/8.22 = 0.9730, \qquad \tfrac{1}{2}(0.9730 + 1.0277) = 1.0004 &&\textbf{0.04\%} \end{aligned} \]
The drive unit was pushed as far from 1 as the bracket permits: 1.4133 against \(\sqrt{2} = 1.4142\).
The penalty is bounded but not evenly spread: one item paid almost the whole worst case and the other paid nothing, depending only on where its best interval fell between two powers of two. And the two items landed on the same eight-week cycle with nobody coordinating them, so ordering them together is now free.
Placing an order costs \(K = \$400\) whatever is on it; each item adds \(k_j\); the carrying charge is 25% a year.
| Item | \(\lambda_j\) | \(c_j\) | \(h_j\) | \(k_j\) | \(c_j\lambda_j\) | \(\sqrt{2k_j/(h_j\lambda_j)}\) |
|---|---|---|---|---|---|---|
| Drive unit | 8,000 | $20 | $5.00 | $25 | $160,000 | 0.0354 |
| Gearbox | 800 | $20 | $5.00 | $20 | $16,000 | 0.1000 |
| Seal kit | 200 | $8 | $2.00 | $15 | $1,600 | 0.2739 |
| Name plate | 40 | $4 | $1.00 | $15 | $160 | 0.8660 |
| Question | Answer |
|---|---|
| What is stocked? | Four items from one supplier |
| What is the demand process? | Constant and known |
| What triggers replenishment, and how much? | An order opportunity every \(T\); item \(j\) joins every \(m_j\)th, covering its cycle |
| What costs are incurred, and when? | \(K\) per order placed, \(k_j\) per item on it, 25% a year on value held |
The last column, each item’s preferred cycle on its minor cost alone, spans a factor of 24, and the annual values a factor of a thousand. That is why the multipliers will not all be one.
\[ \begin{aligned} \text{independent} &: \textstyle\sum_j \sqrt{2(400 + k_j)h_j\lambda_j} &&\text{each pays } K + k_j\\ &= 5{,}830.95 + 1{,}833.03 + 576.19 + 182.21 = \$8{,}422.39 &&\text{drive, gearbox, seal, plate}\\ K + \textstyle\sum_j k_j &= 400 + 25 + 20 + 15 + 15 = 475 &&\text{one order carries everything}\\ \textstyle\sum_j h_j\lambda_j &= 40{,}000 + 4{,}000 + 400 + 40 = 44{,}440 &&\text{holding on the whole family}\\ T^{*} &= \sqrt{2(475)/44{,}440} = 0.1462 \text{ yr} = 53 \text{ days} &&\text{the common cycle}\\ C^{*} &= \sqrt{2(475)(44{,}440)} = \$6{,}497.54 &&\text{23}\%\text{ below independent} \end{aligned} \]
Coordinating alone, with no differentiation between items, has already saved 23%.
| Policy | Base period | Multipliers | Cost | Against independent |
|---|---|---|---|---|
| Independent | $8,422.39 | |||
| Common cycle | 53.4 days | (1, 1, 1, 1) | $6,497.54 | \(-22.9\%\) |
| Best integer ratio | 51.9 days | (1, 1, 2, 6) | $6,402.06 | \(-24.0\%\) |
| Power of two | 51.8 days | (1, 1, 2, 8) | $6,403.34 | \(-24.0\%\) |
The power-of-two policy is $6{,}403.34/6{,}402.06 - 1 = $ 0.020% above the best integer ratio, against a worst case of 6.07%. The two do not share a base period: changing which multipliers are admissible moves the best \(T\) with them.
| Item | Multiplier | Ordered every |
|---|---|---|
| Drive unit, gearbox | 1 | 52 days |
| Seal kit | 2 | 104 days |
| Name plate | 8 | 414 days |
The schedule nests: every second opportunity the seal kit joins an order the drive unit and gearbox were placing anyway, and every eighth the name plate joins one of those. No order is ever placed for one item alone.
Coordination saved 24% against ordering separately, and almost all of it came from sharing orders: the common cycle captured 23 of the 24 points. Choosing clever multipliers added the last one.
The power-of-two restriction, which makes the schedule runnable, cost two hundredths of one percent.
The 6.07% bound is a worst case that a real instance rarely approaches. What makes a coordinated schedule valuable is the shared major setup; what makes it runnable is nesting; and the bound says the second costs almost nothing.
A shared setup couples items through a cost: a major \(K\) per order and a minor \(k_j\) per item on it.
A plan is a base period and integer multipliers. Once \(T\) is fixed the items separate.
A common cycle is the economic order quantity in \(T\) with the family’s totals, and it captured most of the saving here.
Power-of-two intervals nest, and the doubling test puts the rounded interval within a factor of \(\sqrt{2}\) of the best, which costs at most \(3/(2\sqrt{2}) = 1.0607\): 6.07%.
On real data the bound is loose: 6.04% and 0.04% on two items, 0.020% on four.
Read before next session: Multi-Echelon Systems.
Today’s material was Joint Replenishment.
Next session:
Bring the doubling test. Every chain and network next session is rounded with it.