Reduce Warehouse Space with the Pareto Principle using Python
How the 80/20 rule implemented using Python can optimize your layout, reduce space utilization and improve picking productivity.
Learn how to apply the Pareto Principle, the 80/20 rule, to optimize your warehouse space and improve picking productivity with Python.
Developed by Vilfredo Pareto to describe the distribution of wealth, this principle can be generalized to various applications, including logistics management.
You can significantly impact your operations by focusing on the top 20% of your references and picking locations.
In this article, we’ll walk you through a real operational example of how to use Python to apply the Pareto Principle.
💌 New articles straight in your inbox for free: Newsletter
📘 Your complete guide for Supply Chain Analytics: Analytics Cheat Sheet
Summary
I. Introduction of the Pareto Principle
II. Visualization of the Pareto Principle with Python
1. Data Processing using Pandas
2. Add Markers for 80/20
III. How to optimize warehouse space?
1. Grouping High Rotation SKU in Dedicated Picking Zones
2. Densify Picking Locations for Very Low rotations
3. Quick Example
IV. Conclusion
1. Generative AI: "The Supply Chain Analyst"
2. Go Beyond
I. Introduction of the Pareto Principle
An Italian economist named Vilfredo Pareto developed 1906 a mathematical formula to describe the distribution of wealth in Italy. He discovered that 80% of the wealth belonged to 20% of the population.
A few decades later, this rule has been generalized to many other applications, including Supply Chain and Logistics Management.
This principle, called the “Pareto Principle”, “the 80–20 rule”, or “The Law of Trivial Many and Critical Few”, can be translated for Logistics Practitioners
- 80% of your company revenue is made from 20% of your reference
- 80% of your volume is picked in 20% of your picking locations
- 80% of your replenishment volume will be performed on 20% of your picking locations
In this article, we will explore how to apply this Pareto Principle using a real operational example
- 1 month of picking orders
- 144,339 order lines
- 59,372 orders
- 4,864 active references
If you prefer watching, have a look at the video version of this article
💡 Follow me on Medium for more articles related to 🏭 Supply Chain Analytics, 🌳 Sustainability and 🕜 Productivity.
You can find the full code in this Github repository: Link.
My portfolio with other projects: Samir Saci
You can download the dataset here: Link.
II. Visualization of the Pareto Principle with Python
1. Data Processing using Pandas
a. Import Libraries and Dataset
b. Calculate Volume Prepared per SKU (BOX)
To plot the Pareto graph, we need to
- Sum the number of boxes picked per SKU
- Sort your data frame by descending order on BOX quantity
- Calculate the cumulative sum of BOX
- Calculate the cumulative number of SKU
Results
In line 5, you can see that 0.1% of your SKUs represent 12.7% (20,987 Boxes).
💡 Follow me on Medium for more articles related to 🏭 Supply Chain Analytics, 🌳 Sustainability and 🕜 Productivity.
II. Visualization of the Pareto Principle
1. A First Visualization
Using your processed data frame, let us now plot (%BOX) = f(%SKU) to show the Pareto principle
2. Add Markers for 80/20
Marker 1: x = 20% of SKU (blue)
Marker 2: y = 80% of Boxes (red)
Insights
We can see that the threshold of 80% volume is already reached before having 20% of SKU (sku_80 = 12.55%).
Try yourself to see how much %BOX represent 10% of the SKU picked.
III. How to optimize warehouse space?
How can we use these insights to increase your picking productivity and reduce space usage?
1. Grouping High Rotation SKU in Dedicated Picking Zones
This Heatmap above is a 2D representation of the Pareto Principle that links each SKU with its picking location.
Optimization Lever
Reduce the average distance during picking by grouping very high rotations in a specific zone close to the docks.
For more information, look at my previous article
2. Densify Picking Locations for Very Low rotations
What is a replenishment task?
Level 1 is the Picking Location located on the ground level, where the Warehouse Picker will take boxes to prepare orders.
When the quantity level in your picking location is below a certain threshold, your WMS will trigger a Replenishment Task
- Take a pallet from the storage level (level 3) and put it in the picking location (level 1).
How does the Pareto Principle impact your picking location layout?
The Full Pallet Location type is taking a floor pallet location per SKU.
However, we can increase the density of locations by using
- Half Pallet Locations: 2 SKU per floor pallet location
- Shelves Locations: 9/2 SKU per floor pallet location
Surface Optimizations vs. Number of Replenishment Moves
A major issue with half pallets and shelves is the limited storage capacity vs. full pallets.
For the same quantity picked per month, you have 2 times more replenishment with a half pallet and even more with shelves.
Using the Pareto principle and SKU rotations analysis will help us to find the best compromise by choosing the location type using the rules below
- Full Pallet/Half Pallet Locations: only for high-runners (Top 20%)
- Shelves Locations: for the 80% low runners making only 20% of your volume
These thresholds have to be adapted to the specificities of your warehousing operations
- Workforce hourly costs (Euros/Hour) and your productivity for Picking (Lines/Hour) and Replenishment (Moves/Hour)
- Warehouse rental costs (Euros/Sqm/Month)
- Dimensions of your boxes(Width (mm) x Height (mm) x Length (mm)) that will drive your different picking locations' storage capacity
The target is to find the best compromise between high replenishment productivity (Full Pallets) and reduced ground surface occupation (Shelves).
3. Quick Example based on the layout above
Pallet dimension: 0.8 x 0.12 (m x m)
Alley width: 3.05 (m)
Dx: 0.1 (m) Distance between two pallets
Dy: 0.15 (m)Ground surface occupied(including alley)
Full Pallet = (0,8 + 0,1) x (1,2 + 0,15 + 3,05/2) = 2,5875 (m2)
Half Pallet = 2,5875 / 2 = 1,29375 (m2)
Shelves = 2 x 2,5875/9 = 0,575 (m2)Warehouse Rental Cost (Jiaxing, China)
C_rent = 26,66 (Rmb/Sqm/Month) = 3,45 (Euros/Sqm/Month)Forklift Driver Hourly Cost
C_driv = 29 (Rmb/Hour) = 3,76 (Euros/Hour)Replenishment Productivities
Full Pallet: 15 (Moves/Hour)
Half Pallet: 13 (Moves/Hour)
Shelve : 3,2 (Moves/Hour)Picking Location Capacity
Full Pallet: 30 (Boxes)
Half Pallet: 15 (Boxes)
Shelve : 4 (Boxes)
Example 1: Very High Rotation
Conclusion
Full Pallet Location is the cheapest solution
Example 2: High Rotation
Conclusion
Half Pallet Location is the cheapest solution
Example 3: Low Rotation
Conclusion
Shelf Location is the cheapest solution
💡 Follow me on Medium for more articles related to 🏭 Supply Chain Analytics, 🌳 Sustainability and 🕜 Productivity.
IV. Conclusion
Use Generative AI to productize the model
I wanted to explore the possibility of combining such analysis with Large Language Model (LLM) agents used to interface with users.
After OpenAI introduced a new feature allowing users to create custom versions of ChatGPT tailored for specific purposes, I created and deployed an agent to automate Pareto and ABC analyses.
For more details,
Go Beyond
We presented here a simple methodology for visualising and applying the Pareto Principle on your Warehouse Picking Order Profile to estimate the optimisation potential.
Based on your optimized layout, you can build a simulation model to estimate the impact of several Single Picker Routing Problem strategies on your Picking Productivity
References
- Giovanni Busino, « The signification of Vilfredo Pareto’s sociology », Revue européenne des sciences sociales, Link
- “Improve Warehouse Productivity using Spatial Clustering with Python Scipy”, Towards Data Science, Samir Saci
- “Product Segmentation for Retail with Python”, Towards Data Science, Samir Saci