EOQCalculator.com
Wilson EOQ, with the math
Scenario

EOQ for perishable inventory

Direct answer

For perishable goods, Wilson EOQ is bounded above by shelf life: Q_max = d * shelf_life. Within that cap, carrying cost loads upward with shrinkage (typically 4 to 8 percent for ambient dry goods, up to 15 to 20 percent for fresh produce[1]). When the Wilson Q* exceeds the shelf-life cap, you are at the boundary of EOQ’s validity and should switch to a deteriorating-inventory model[2].

The worked example

Worked example
Dry goods SKU, 30-day shelf life
Inputs
Annual demand D12,000 units
Daily demand d_bar33 units
Order cost S$65 / PO
Unit cost C$8
Carrying cost i (incl. shrinkage)40%
Shelf life30 days
Cap: Q_max = d * shelf_life990 units
Result
Optimal order quantity
698 units
Annual holding$1,117
Annual ordering$1,117
Annual total (ex. purchase)$2,234
Takeaway: Wilson Q* fits inside the shelf-life cap, so the formula applies as-is. If Q* exceeded the cap, you would order Q_max and document the shelf-life-binding constraint.

The Ghare-Schrader extension

For exponential decay (e.g. enzymatic spoilage), Ghare and Schrader (1963) derive an EOQ-like formula where the holding cost effectively rises over the cycle as remaining units lose value[2]. The closed form is a transcendental equation; numerical solution gives Q* that is typically 10 to 20 percent smaller than Wilson at the same H.

USDA shrinkage benchmarks

USDA ERS food-loss data puts retail-level loss at roughly 10 percent for fresh fruits and vegetables and 4 percent for dairy[3]. Use category-specific shrinkage to load i; don’t apply a blanket 30 percent across a mixed perishable SKU list.