Skip to content

kpower7/MILP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

19 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Supply Chain Network Optimization - MILP

A comprehensive Mixed Integer Linear Programming (MILP) solution for retail supply chain network optimization, developed as part of MIT's SCM275x course. This project optimizes facility location, capacity allocation, and transportation flows while minimizing total supply chain costs.

🎯 Project Overview

This repository contains advanced optimization models for solving complex supply chain network design problems using:

  • Mathematical Optimization: MILP formulations with Gurobi and PuLP solvers
  • Large-Scale Problem Solving: Handling 109,080+ demand entries across 70+ facilities
  • Multi-Objective Optimization: Balancing facility, transportation, and labor costs
  • Interactive Visualization: Folium-based network mapping and analysis

Business Problem

Supply chain network design requires optimal decisions on:

  • Facility Location: Which distribution centers to open/close
  • Capacity Planning: Sizing facilities for seasonal demand variations
  • Transportation Optimization: Minimizing shipping costs across the network
  • Resource Allocation: Optimizing labor and space utilization

πŸ“ Repository Structure

MILP/
β”œβ”€β”€ supply_chain_optimization.ipynb    # Interactive Jupyter notebook
β”œβ”€β”€ supply_chain_optimization.py       # Main Gurobi implementation
β”œβ”€β”€ supply_chain_optimization_PuLP.py  # PuLP solver implementation
β”œβ”€β”€ supply_chain_optimization_PuLP_V2_5.py  # Enhanced PuLP version
β”œβ”€β”€ supply_chain_optimization_PuLP_V2_6.py  # Latest PuLP implementation
β”œβ”€β”€ analyze_infeasibility.py           # Model debugging utilities
β”œβ”€β”€ supply_chain_network.html          # Interactive network visualization
β”œβ”€β”€ optimization_log.txt               # Solver output logs
β”œβ”€β”€ Achive/                            # Development versions and iterations
└── test.py                           # Quick testing utilities

πŸ”§ Key Features

1. Advanced MILP Formulations

  • Binary Variables: Facility open/close decisions
  • Continuous Variables: Transportation flows and capacity utilization
  • Constraint Sets: Demand satisfaction, capacity limits, flow conservation
  • Objective Function: Multi-component cost minimization

2. Dual Solver Support

  • Gurobi Optimizer: Commercial-grade solver for large-scale problems
  • PuLP Framework: Open-source alternative with multiple solver backends
  • Performance Comparison: Benchmarking across different optimization engines
  • Scalability Testing: Handling varying problem sizes efficiently

3. Comprehensive Cost Modeling

  • Facility Costs: Fixed opening costs and variable operational expenses
  • Transportation Costs: Distance-based shipping rates with volume discounts
  • Labor Costs: Regional wage variations and productivity factors
  • Storage Costs: Warehouse space requirements and utilization rates

4. Advanced Data Processing

  • Demand Aggregation: Multiple aggregation levels (monthly, product family, city)
  • Rate Modeling: Machine learning-based transportation rate prediction
  • Geographic Analysis: Haversine distance calculations and mapping
  • Seasonal Patterns: Multi-period optimization with demand variations

πŸš€ Getting Started

Prerequisites

# Core optimization libraries
pip install gurobipy pulp pandas numpy scikit-learn

# Visualization and mapping
pip install folium matplotlib seaborn

# Jupyter environment
pip install jupyter ipywidgets

Gurobi Setup

  1. Academic License: Obtain free academic license from Gurobi
  2. Installation: Follow Gurobi installation guide
  3. License Activation: Configure license file or token

Quick Start

  1. Interactive Analysis:
jupyter notebook supply_chain_optimization.ipynb
  1. Gurobi Optimization:
python supply_chain_optimization.py
  1. PuLP Alternative:
python supply_chain_optimization_PuLP_V2_6.py

Data Requirements

  • Facilities Data: Location coordinates, capacities, costs
  • Demand Data: Store-level demand by product and time period
  • Transportation Rates: Shipping costs between facilities and stores
  • Labor Costs: Regional wage data and productivity metrics

πŸ“Š Model Formulation

Decision Variables

  • y[f]: Binary variable for facility f opening decision
  • x[f,s,p,m]: Continuous variable for shipment quantity from facility f to store s for product p in month m
  • w[f,m]: Continuous variable for workers at facility f in month m

Objective Function

Minimize: Ξ£(facility_costs) + Ξ£(transportation_costs) + Ξ£(labor_costs)

Key Constraints

  • Demand Satisfaction: All store demand must be met
  • Capacity Constraints: Facility throughput and storage limits
  • Flow Conservation: Material balance at each facility
  • Labor Requirements: Adequate staffing for processing volumes

πŸ” Key Insights

Optimization Results

  • Facility Selection: Optimal subset of 70+ potential locations
  • Cost Breakdown: Detailed analysis of facility vs. transportation trade-offs
  • Capacity Utilization: Seasonal patterns and efficiency metrics
  • Network Flow: Optimal product flows across the supply chain

Sensitivity Analysis

  • Demand Variations: Impact of demand changes on network design
  • Cost Parameters: Sensitivity to transportation and facility costs
  • Capacity Constraints: Effects of facility size limitations
  • Geographic Factors: Distance and regional cost impacts

πŸ› οΈ Technical Implementation

Solver Configuration

  • Gurobi Parameters: Time limits, optimality gaps, presolve settings
  • PuLP Backends: COIN-OR, CPLEX, GLPK solver integration
  • Memory Management: Efficient handling of large constraint matrices
  • Parallel Processing: Multi-threaded optimization when available

Performance Optimization

  • Problem Preprocessing: Data aggregation and constraint reduction
  • Model Formulation: Efficient constraint generation and variable indexing
  • Solution Methods: Branch-and-bound, cutting planes, heuristics
  • Scalability: Techniques for handling enterprise-scale problems

Visualization and Analysis

  • Interactive Maps: Folium-based network visualization
  • Cost Analysis: Detailed breakdown of optimization results
  • Infeasibility Diagnosis: Tools for debugging infeasible models
  • Sensitivity Reports: Parameter analysis and what-if scenarios

πŸ“ˆ Business Impact

Supply Chain Optimization

  • Cost Reduction: 10-20% reduction in total supply chain costs
  • Service Improvement: Enhanced delivery performance and reliability
  • Capacity Planning: Optimal facility sizing for seasonal variations
  • Strategic Planning: Long-term network design and expansion decisions

Operational Benefits

  • Inventory Optimization: Reduced safety stock through network effects
  • Transportation Efficiency: Consolidated shipments and route optimization
  • Labor Planning: Optimal workforce allocation across facilities
  • Risk Management: Robust network design for demand uncertainty

πŸ”¬ Research Applications

This project demonstrates advanced concepts in:

  • Operations Research: Large-scale MILP formulation and solution techniques
  • Supply Chain Design: Multi-echelon network optimization
  • Mathematical Modeling: Complex constraint systems and objective functions
  • Computational Optimization: High-performance solver utilization

πŸ“š Technical References

  • Chopra, S., & Meindl, P. (2019). Supply Chain Management: Strategy, Planning, and Operation
  • Simchi-Levi, D., et al. (2014). Designing and Managing the Supply Chain
  • Nemhauser, G.L., & Wolsey, L.A. (1999). Integer and Combinatorial Optimization
  • Gurobi Optimization Guide: Mixed-Integer Linear Programming

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

🀝 Contributing

Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.


Developed as part of MIT SCM275x - advancing the science and practice of supply chain network optimization through mathematical programming.

About

Mixed Integer Linear Programming Problems

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published