Case study 1 · Research & decision support

A decision support framework for adaptive inventory replenishment

For my MRes dissertation, I built a framework that predicts how severe a demand shock will be and then changes replenishment decisions to match.

View the code and notebook on GitHub

ContextMRes Computing dissertation, University of Bolton
My roleSole researcher: problem framing, data, modelling, evaluation
DataUCI Online Retail II, 1,636 SKUs, weekly
ToolsPython, pandas, scikit-learn, XGBoost, LightGBM, Jupyter

The business problem

Most replenishment policies are static. A classic (s,S) policy reorders to level S when stock falls below s, and those parameters are set from average demand. When demand spikes suddenly because of a promotion, a seasonal peak or an outside event, a static policy reacts too late. The result is stockouts and lost sales, or expensive emergency orders.

Planners usually spot these shocks by gut feel. I wanted to know: can we warn planners early about how severe a shock will be, and turn that warning into a better reorder decision?

Stakeholders & requirements

I framed the solution around the people who would use it, drawing on my own years as a planner:

StakeholderNeedRequirement
Replenishment plannerKnow which SKUs are at risk before the shock hitsShock severity forecast per SKU per week, in plain categories
Inventory managerProtect service level without inflating stockPolicy parameters that adjust to the predicted severity
FinanceEvidence before changing policyHead-to-head comparison against the current static policy, with significance testing

Approach

Solution flow

1 · PrepareClean transactions and aggregate to weekly demand per SKU
→
2 · LabelRolling z-score to label each week Normal, Moderate, High or Severe
→
3 · PredictCompare Random Forest, XGBoost and LightGBM classifiers
→
4 · DecideMap predicted severity to adaptive reorder parameters
→
5 · EvaluateSimulate against static (s,S) and run Wilcoxon tests

Results

1,636
SKUs simulated head-to-head
p < 0.0001
Improvement in service level (significant)
p < 0.0001
Reduction in stockout rate (significant)
33.7%
of SKUs (551) had lower total cost; not significant overall (p = 0.124)

The adaptive policy clearly improved service level and stockout rate. The total-cost saving was real for about a third of SKUs but not statistically significant across the whole range. That finding matters: the case for adoption is about availability, not guaranteed cost cuts. I reported it that way rather than overstating the result.

What this shows as a BA

Reflection

Next, I'd run a pilot with a planning team on a small SKU range and measure how often planners accept or override the recommendation. Adoption is where decision support tools succeed or fail. I'd also test cost-weighted policy rules to target the SKUs where savings are most likely.