A group project for Business Analytics course, focusing on Optimization and Simulation for Global Supply Chain of a virtual company.
This project addresses a strategic facility location and production allocation problem for PrecisionLink, a global electronics manufacturer. The goal was to design a cost-efficient and resilient supply chain network capable of serving five key global markets: USA, Germany, Japan, Brazil, and India.
Using Mixed-Integer Linear Programming (MILP) for optimization and Monte Carlo Simulation for risk assessment, we identified a network configuration that minimizes total costs while maintaining 100% robustness against demand volatility.
PrecisionLink faces the challenge of expanding its production capacity to meet uncertain future demand across different regions. Key decision variables include:
- Where to open factories? (Binary decision: Open/Close)
- What capacity level? (Low vs. High Capacity)
-
How to allocate production? (Flow from Factory
$i$ to Market$j$ )
The objective is to minimize the Total Cost, which consists of:
- Fixed Costs: Annualized setup/operating costs for factories.
- Variable Costs: Production and shipping costs per unit.
We adopted a two-stage quantitative approach using Python:
- Optimization Modeling (MILP)
We formulated the problem using the PuLP library.
-
Objective Function: Minimize
$Z = \sum \text{Fixed Costs} + \sum \text{Variable Costs}$ . -
Constraints:
-
Demand Satisfaction: Total production shipped to market
$j$ $\ge$ Demand of$j$ . -
Capacity: Total production at factory
$i$ $\le$ Installed Capacity of$i$ . - Logical Constraints: Cannot produce if the factory is not opened.
-
Demand Satisfaction: Total production shipped to market
- Robustness Analysis (Monte Carlo Simulation)
To account for market volatility, we ran 500 simulation iterations.
-
Randomness: Demand for each market was treated as a normal distribution
$N(\mu, \sigma)$ based on forecasted data. - Process: For each iteration, we generated a random demand scenario and solved the MILP model to find the optimal network for that specific scenario.
- Robustness Score: Calculated the probability of a facility being "Open" across all 500 scenarios.
Based on the simulation of 500 demand scenarios:
- Optimal Network Configuration
- USA (High Capacity) and Japan (High Capacity) factories are the most robust nodes, with a 100% opening probability. They serve as the backbone of the global supply chain.
- Brazil and India facilities showed lower utilization probabilities, suggesting they are sensitive to demand spikes but not essential for base-load demand.
- Financial Performance
- Mean Total Cost: ~$92.6 Million
- Cost Volatility: Standard Deviation of ~$6.0 Million
- Risk Profile: The simulation quantified the financial risk, allowing stakeholders to budget for a "worst-case" scenario (e.g., 95th percentile cost).
- Language: Python
- Optimization: PuLP (Linear Programming solver)
- Data Manipulation: Pandas, NumPy
- Visualization: Matplotlib, Seaborn (for cost distribution and sensitivity plots)
P.S. This project was completed as part of the Business Analytics curriculum at Johns Hopkins Carey Business School.