Robust Supply Chain Networks with Monte Carlo Simulation

Do you consider the fluctuation of your demand when you design a Supply Chain Network? In this article, we will build a simple methodology to design a Robust Supply Chain Network using Monte Carlo simulation with Python.

Robust Supply Chain Networks with Monte Carlo Simulation

Do you consider the fluctuation of your demand when you design a Supply Chain Network?

Article originally published on Medium.

Supply chain optimization makes the best use of data analytics to find an optimal combination of factories and distribution centres to meet the demand of your customers.

In many software and solutions in the market, the core structure behind is a Linear Programming Model.

Some of these models find the right allocation of factories to meet the demand and minimize the costs assuming a constant demand.

What happens if the demand is fluctuating?

Your network may lose robustness, especially if you have a very high seasonality of your demand (e-commerce, cosmetics, fast fashion).

In this article, we will build a simple methodology to design a Robust Supply Chain Network using Monte Carlo simulation with Python.

💌 New articles straight in your inbox for free: Newsletter

I. Supply Chain Network Design
Find the right allocation of factories to meet a global demand
II. Problem Statement
What happens if your demand is fluctuating?
1. Limits of the initial solution
Understand the robustness of the initial solution
2. Methodology of simulation
Simulate 50 scenarios based on a normal distribution of the demand
3. Analyze the results
What are the different combinations of solutions?
4. Final Solution
The most robust combination?
III. Conclusion & Next Steps

I. Supply Chain Network Design

1. Global Supply Chain Network

As the Head of Supply Chain Management of an international manufacturing company, you want to redefine the Supply Chain Network for the next 5 years.

Supply Chain Network Problem

It starts with the demand from your customers in 5 different markets (Brazil, USA, Germany, India and Japan).

Demand in Million Units/Month

US market is driving more than half of the demand.

Supply Capacity
You can open factories in the five markets. There is a choice between low and high capacity facilities.

Example: Low Capacity factories in the USA can produce 500,000 units/month.

Fixed Costs
If you open a facility you have fixed costs to add to your budget (Electricity, Real Estate, CAPEX, …).

High capacity plants in India have lower fixed costs than low capacity plants in the USA.

Variable Costs

Fixed Costs + Variable Costs = Total Costs of Production

Freight Costs
Costs to ship a container from Country XXX to Country YYY.

Total Cost

The total cost to produce and ship products to the market.

Based on the demand of the markets, where do I need to open factories?

3. Linear Programming Model

For more details, you can find in the reference links a previous one where I explain in detail how to implement it using the PuLP Python library.

This is a classic problem of Linear Programming with an objective function, constraints and parameters.

Manufacturing Footprint
Where do I need to open locations?

You need to open four locations in Brazil, the USA, Japan and India. Except in Brazil, all these locations are high capacity plants.

Products Flows
How many units are produced by factory YYY for Market XXX?

Japan factory is only producing for the local market while Brazil and India are mainly driven by export demand.

You can find the source code with dummy data in my Github repository: Link

II. Problem Statement

This solution has been implemented assuming a constant demand of the markets.

1. Limits of the initial solution

What could be the impact if we have +10% in Japan and +20% in the US?

By looking at the utilization rates, you can easily guess that your current footprint will not be able to adapt to this surge of demand.

2. Methodology of Simulation

We cannot rely on a single solution and expect that our network will absorb the demand throughout the year.

Usually, these parameters are calculated based on the yearly average of the sales.

Let’s simulate this demand variability and see the impact on the network design.

Generate 50 scenarios

We will assume that the demand is following a normal distribution with a coefficient of variation CV = 0.5. (You can adapt the distribution to your needs)

You have now a matrix of 50 columns that represent your 50 different scenarios.

Optimal Solution for each Scenario
What is the optimal combination for each scenario?

  • India always has at least 1 facility open
  • Scenario 16 needs all facilities to be open because of a peak in the US demand
  • Scenario 12 only needs 2 LOW capacity facilities in Brazil and India

Distribution of the optimal combinations
Do we have combinations that appear more frequently than others?

After removing duplicates we have 16 unique combinations

Which combination seems the most robust?

It seems that the combination C2 (High/Low plants in India and Brazil + 1 High plant in Japan) is appearing the most. This combination is closely followed by C2, C6 and C10.

4. Final Solutions

It is not easy to draft a clear conclusion, but if we choose the safe solution we need to take the C2 combination.

As it maximizes the footprint in the countries with low costs of production, we are sure to meet the demand for most of the scenarios.

III. Next Steps


There is no perfect solution for this problem as we need to balance the priority between securing the supply and reducing costs.

This kind of methodology can be a good start to drive discussions around the target for stock service level and production costs.

Next Step

Now that we have a set of candidates for the potential BEST solution, we need to test them on our 50 scenarios:

  • What is the total cost for each scenario?
  • What is the percentage of demand produced by our facilities?

This will bring quantitative information to start discussing with the management and get a final arbitration.

About Me

Let’s connect on Linkedin and Twitter, I am a Supply Chain Engineer that is using data analytics to improve logistics operations and reduce costs.


[1] — Supply Chain Optimization with Python, Samir Saci

Supply Chain Optimization with Python | Samir Saci
Find the optimal locations of your manufacturing facilities to meet your customers’ demand and reduce production costs