Inventory Management Models: EOQ, Reorder Point, and More

Inventory Management Models

Model 1: Single Period Model (Normal Distribution)

  • Purchase price (P): Given as a constant, let’s use p. Selling price (S): Given as a constant, let’s use s. Salvage value (V): Given as a constant, let’s use v. Demand (D): Given as a constant, let’s use d. Standard Deviation of Demand (σ): Given as a constant, let’s use σ. Overage Cost (Co): Co = p – v Underage Cost (Cu): Cu = s – p Critical Ratio (CR): CR = Cu / (Cu + Co) which expands to CR = (s-p) / ((s-p) + (p-v)) Normal Table z-score (z): z = NORMSINV(CR) which means z is the inverse standard normal value of the critical ratio
    Optimal Order Quantity (Q): Q* = d + z * σ

Model 2: Single Period Model (Discrete Distribution)

  • Purchase price (P): Given as a constant, let’s use p. Selling price (S): Given as a constant, let’s use s. Salvage value (V): Given as a constant, let’s use v. Demand (D): Given as a list of demand options, lets represent it as a list di. SD of Demand (σ): Given as a constant, let’s use σ. Overage Cost (Co): Co = p – v Underage Cost (Cu): Cu = s – p Critical Ratio (CR): CR = Cu / (Cu + Co) which expands to CR = (s-p) / ((s-p) + (p-v)) Optimal Order Quantity (Q*): Q* = XLOOKUP(CR, Cumulative Probability List, Demand List) This looks up the Critical Ratio in the cumulative probability list and returns the associated demand number. Where the cumulative probabilities have already been calculated using the formula : cumulative probability at a point = sum of probability at this point + cumulative probability at last point

Model 3: Economic Order Quantity (EOQ) Model

  • Annual Demand (A): Let’s represent this as A. Unit Purchasing/Procurement Costs (C): Let’s represent this as c. Setup/Ordering Costs (S): Let’s represent this as s. Per Unit Annual Inventory Holding Cost (H): H = 0.25 * c Total Cost for Q units (TC): TC = A * c + (A / Q) * s + (Q / 2) * H
    Economic Order Quantity (EOQ or Q): Q* = sqrt((2 * A * s) / H) or we can substitute H in the formula to get: Q* = sqrt((2 * A * s) / (0.25*c)) which is equivalent to Q* = sqrt((8 * A * s) / c) Orders placed per year: A / Q*

Model 4: Reorder Point (Constant Demand)

  • Daily Demand (d): Given as A/250 where A is annual demand Average Time Between Orders: 250/ number of orders per year Average Daily Demand (d): Given as a constant d Lead time (L): Given as a constant, let’s use L. Reorder Point (ROP): ROP = d * L

Model 5: Reorder Point (Variable Demand)

  • Average Daily Demand (d): Given as a constant d Lead time (L): Given as a constant, let’s use L. Probability of stock out (Pso): Let’s represent as Pso Standard Deviation of Demand (σ): Given as a constant, let’s use σ. Desired Service Level (SL): SL = 1 – Pso Safety Stock (SS): SS = NORMSINV(SL) * σ where the service level corresponds to the z-score and the z-score is multiplied by the standard deviation of the demand Reorder Point (ROP): ROP = d * L + SS

Model 6: Periodic Review Model (Finding the Optimal Order Q)

  • Average Demand (d): Let’s represent this as d. N time units between reviews (N): Let’s represent this as N. Lead time (L): Let’s represent this as L. Standard Deviation of Demand (σ): Let’s represent this as σ. Service Level (SL): Given as a constant, let’s use SL. Items on Hand (IOH): Let’s represent this as IOH. Items on Order (IOO): Let’s represent this as IOO. Current Inventory Position (IP): IP= IOH + IOO , though in this case IOO is considered as 0. Safety Stock (SS): SS = NORMSINV(SL) * σ * sqrt(N + L) Order up to level (OUL): OUL = d * (N + L) + SS Order Quantity (Q): Q = OUL – IP Total Safety Stock held: SS*N

Model 7: Pooled Demand Standard Deviation

  • Standard Deviation of Demand (σ): Let’s represent this as σ. n of demands (n): Let’s represent this as n. N time units between reviews (N): Let’s represent this as N. Lead Time (L): Let’s represent this as L. Standard Deviation of Demand Over Review Period (σ_pooled): σ_pooled = σ * sqrt(n) Service Level (SL): Given as a constant, let’s use SL. Safety Stock (SS): SS = NORMSINV(SL) * σ_pooled * sqrt(N + L)

Model 8: Frequency and Probability Calculation

This isn’t a traditional “model” but rather a calculation table. Let’s define the logic:

  • Frequency list (Fi): A list of frequency counts, let this be represented as fi.

  • Total frequency (TF): Sum of all frequency counts, let this be represented as TF.

  • Probability of facing demand: probability at point i = Fi/TF, this would create a list of probabilities based on the values in frequency

  • Cumulative Probability: Cumulative probability at point i = Probability at i + Cumulative probability at point i – 1


Key Inventory Concepts

I: Make or Buy

Outsourcing: subcontracts internal process external, Offshoring: process another country, Backward Integration: firm buys supplier, Suitable for Outsourcing: not critical, no skill, doesn’t fit. Alternatives: Supplier Diversification, Limited Integration, favorable contracts.

II: Newsvendor (Single Period)

Use: one production, random demand. Overage Cost (Co): Co = Purchase – Salvage Underage Cost (Cu): Cu = Selling – Purchase Critical Ratio (CR): CR = Cu / (Cu + Co). Optimal Order (Q*): Discrete: Q* = XLOOKUP(CR, Cum.Prob.List, Demand List), use roundup. Normal: Q* = d + z * σ, z=NORMSINV(CR)

III: EOQ (Q Model)

Use: continuous, constant demand. Annual Demand (A): A. Unit Cost (c): c, Setup (s): s. Holding Cost (H): H = 0.25 * c EOQ (Q*): Q* = sqrt((8 * A * s) / c) Total Cost (TC): TC = A * c + (A / Q) * s + (Q / 2) * H Reorder Point (ROP): Constant ROP = d * L, Variable ROP = d * L + SS, SS= z * σ * sqrt(L). Orders per yr: A / Q*.

IV: Reorder Point (Constant)

Daily Demand (d): d = A / 250, ROP: ROP = d * L.

V: Reorder Point (Variable)

Service Level (SL): SL = 1 – Pso Safety Stock (SS): SS = NORMSINV(SL) * σ , ROP: ROP = d*L + SS.

VI: Periodic Review (P Model)

Review (N): N. Lead (L): L, Avg. Demand (d): d. Service Level (SL): SL. Safety Stock (SS): SS = NORMSINV(SL) * σ * sqrt(N + L), Order-up-to (OUL): OUL = d * (L + T) + SS Order Q: Q = OUL – IP. Total SS Held: SS*N

VII: Demand Pooling (Pooled SD)

Pooled SD (σ_pooled): σ_pooled = σ * sqrt(n). Safety Stock (SS): SS = NORMSINV(SL) * σ_pooled * sqrt(N+L)

VIII: Frequency and Probability

Frequency (Fi): fi, Total Frequency (TF): TF, Prob at point i = Fi/TF, Cumulative Prob: Prob at i + Cum. Prob at i-1

IX: ABC Classification

Pareto (80/20): 80% effects from 20% causes. Class A: High dollar (70-80%), few items. Class B: Moderate dollar (15-20%), some items. Class C: Low dollar (5%), many items. C items are ordered less frequently than A items

Supply Chain Insights

X: Bullwhip Effect

Def: Demand variability increases upstream. Causes: Forecast, Lead Time, Batching, Fluctuations, Over-reacting. Consequences: Uncerainty, bad planning. Mitigation: POS data, VMI, lead time reduction, EDI, 3rd party, EDLP, past sales.

XI: Supply Chain Strategy

Functional Products: stable, predictable (efficient supply). Innovative: less predictable (responsive). Stable Process: mature, reliable (efficient). Evolving Process: new, unpredictable (agile, risk-hedging).

Key Formulas

XII: Formulas

Newsvendor: Co = p-v,Cu = s-p, CR = Cu / (Cu+Co),Q*= d+z*σ, z=NORMSINV(CR), Q* = XLOOKUP(CR, Cumulative Probability List, Demand List)

EOQ: Q* = sqrt((8*A*s)/c), TC = A*c + (A/Q)*s + (Q/2)*H, ROP = d*L +SS, SS= z * σ * sqrt(L)

Periodic: SS = z*σ*sqrt(L+T), OUL = d*(L+T)+SS, Q = OUL – IP

Pooled SD: σ_pooled= σ * sqrt(n), SS = NORMSINV(SL) * σ_pooled * sqrt(N + L)

Additional Concepts

XIII: Break-Even Analysis

Break-Even point (units): Fixed Cost Difference / Variable Cost Difference

XIV: In Class Quiz Concepts

  • If CR decreases in the Newsvendor model: z and Q* both decrease

  • Service level: probability no stockout during lead time.

  • Lower Safety Stock is associated with lower service levels.

  • Pooled Demand: Variance of pooled demand over n periods is n times the variance for each single demand. Therefore the standard deviation is sqrt(n) of single demand.

  • Reorder Point (ROP) in the EOQ model increases as demand becomes more volatile

  • Order-Up-to-Level calculation using the formula : OUL = d*(L+T)+SS