One of the major challenges Supply Chains are facing due to the COVID-19 crisis is re-deployment of their products. That is, attempting to move products from one warehouse to another so that they are able to fulfill customer orders.
The need for re-deployment can stem from a number of issues. In the case of the company I work for, we have had explosive demand from both grocery and wholesale chains who are seeing greatly increased consumer demand as more consumers like you and I are cooking at home instead of eating out at restaurants.
The aim of this project is to provide recommended weekly stock transfer orders (STOs) which effectively re-deploy inventory and balance supply to meet immediate demand when it is cost effective. I plan to achieve this by applying linear programming and an optimization algorithm with an objective function to minimize total cost.
Dataset
I plan to source data from my companies enterprise resource planning (ERP) system SAP. Since this data is confidential I will not be able to share it publicly.
Related Work Review
The consumer packaged goods (CPG) industry is certainly not the only industry needing to rapidly adapt and re-deploy its resources due to the COVID-19 crisis. At the University of Toronto, Professor Timothy Chan and an engineering team developed and launched an optimization tool they call "Redeploy," to improve hospital staffing during the pandemic. According to their website the "tool automates the matching of available staff (e.g., nurses, social workers, research and administrative staff) to new and ongoing job requests (e.g., clinical, research, door screening)." Below is sample of the optimized schedule which is an output of their tool and found on the team's website:
Project Differentiation
Unlike the work of the team at the University of Toronto, my optimization algorithm will have the goal of minimizing total cost. Some unique constraints we must take into account are:
16,000+ unique products
4 distribution centers each of which can ship and receive products
2 different modes of transportation (Truck, Railway)
Capacity limits of each mode of transportation
Differing speeds of arrival for each mode of transportation
The option and cost of a "shortage" (not delivering product to the customer on time)
Below is a simplified network diagram for single week, single product detailing the initially identified nodes and arcs:
Sample Datasets
As I mentioned previously, I am sourcing data from my companies enterprise resource planning (ERP) system SAP. Since this data is confidential, I will not be able to share it publicly. However, I am providing sample datasets that are usable with the code found in my GitHub Repository. The two datasets we will be using for our singe product, single week, optimization are:
1) A data frame containing the relevant demand and supply information for a single product. This data frame essentially contains our "problem." As seen below , in 3 days we are projected to short 50 units of Example Material at Plant 1020. Meanwhile, Plant 1100 has 70 units of Example Material available to ship, Plant 1415 has 50 units of Example Material available to ship, and plant 1645 currently does not have any excess supply of Example Material that they are able to ship.
2) A data frame containing all of the relevant shipping information for each transportation lane-mode combination. This data frame contains our possible transportation "solutions." As seen on the right, one option could be to ship by railway from plant 1645 to plant 1020. This will take a 6 day transit time and cost $1777.
In the video below I walk through the decision variables, constraints, objective function, and optimal solution to this problem.
Expanded Datasets
My final deliverable is not to just be able to provide recommendations for a single product in a single week, but to have the ability to optimize thousands of products across any time horizon. For this deliverable, our shipping data frame will remain the same as our previous implementation, but our material data frame will expand significantly to 16,000 different materials across the 4 distribution centers:
In the video below I walk through updates to the linear programming model as well as my findings on the models final output and performance.
As demonstrated in the video, 92% of all Materials were able to be sent without incurring a shortage expense.
Apart from minimizing shortages, the lowest cost transportation lanes were consistently chosen:
All of this results in a projected:
References
Chan, Timothy., et al. “Redeploy Redeploy.” Redeploy, University of Toronto, 2020, redeploy.ca/team/.
Keen, Ben. “Linear Programming with Python and PuLP.” Ben Alex Keen, Apr. 2016, benalexkeen.com/linear-programming-with-python-and-pulp-part-5/.
Renotte, Nicholas. How to Auto Generate Optimal Manufacturing Schedules Using TM1py and PuLP. 1 Feb. 2018, www.nicholasrenotte.com/how-to-auto-generate-optimal-manufacturing-schedules-using-tm1py-and-pulp/.