Search code examples
c#forecastinginventory

Designing an Inventory Demand Forecast System


Overstocked and understocked parts are becoming a problem for one of my clients. Purchase orders are submitted ~every two weeks. Delivery takes 1-2 weeks. My client keeps track of inventory records with a .NET-based system I built.

I want to enhance the inventory management system to continually advise on inventory levels by forecasting inventory demand and suggesting optimal purchase orders. I've read plenty of what I could find on forecasting algorithms, but I need help with designing a good algorithm (or weighting several algorithms) for an accurate forecast.

Understocked items carry a greater cost than overstocked items to this client, since most parts will eventually be used, but cash could have been used for something else.

It would be nice to represent demand with incrementing risk, which leans toward an initial Monte Carlo implementation.

How should I approach this problem? What are good/standard algorithms to use for this type of problem? Are there any good, free libraries for tackling the inventory demand problem?


Solution

  • This is a pretty well understood area. It also goes under the name "demand forecasting", "inventory management", or "inventory replenishment."

    A simple technique that works well is called "exponential smoothing." It came out of research done in the 40s for the Navy - looking at how to keep shipyards stocked for building warships.

    The original paper by Charles C. Holt, "Forecasting seasonals and trends by exponentially weighted moving averages," was reprinted in 2004 in the "International Journal of Forecasting," but I am sure you can find other tutorials and articles - it's become a standard technique.

    There is a stackexchange which includes this topic: http://stats.stackexchange.com. "Forecasting" and "smoothing" are good tags to use. Rob Hyndman over there has given many good answers and written at least one book on the subject: "Forecasting: Methods and Applications".