Multi-item joint-replenishment EOQ
When N SKUs share one PO and one shared ordering cost S, run them on a common replenishment cycle T*. Optimal T* = sqrt(2 * S / sum_i(H_i * D_i)). Item-level quantities back-solve from T*: Q_i = D_i * T*[1].
When joint replenishment wins
The shared ordering cost S has to be meaningfully larger than the per-item incremental order cost s_i. If S is $200 and s_i is near zero (adding one more SKU to an existing PO costs almost nothing), joint replenishment is essentially free. The alternative is running N independent Wilson EOQs and accepting that some will reorder more often than others, paying the full S each time.
When it does not win
If incremental per-item costs s_i are non-trivial (separate inspection, separate receiving, separate quality checks per SKU), the joint-cycle assumption breaks. The right tool is the indirect-grouping heuristic where high-velocity items reorder every T* and slow movers reorder every kT* for integer k. Silver (1976) gives the standard algorithm[2].
Back-solving per-item quantities
Once T* is set, Q_i = D_i * T* for each item. Annual average inventory across the portfolio is (1/2) * sum_i(D_i * T*) = (T*/2) * sum_i(D_i). Compare against the sum of independent Wilson EOQs to decide whether to consolidate.