Inventory Optimization for Multi-Product Stocking Across Warehouses

Developed an AMPL optimization model to minimize inventory costs while balancing demand across multiple warehouses under real-world operational constraints.
Operations Research
Supply Chain
Optimization
AMPL
Python
Authors

Luciana Claure Parada

McKenna Barton

Yonatan Rubio Lugo

Published

May 10, 2025

Project Overview

This project developed a linear programming model in AMPL to optimize inventory decisions across two warehouses. The objective was to minimize total inventory costs while satisfying customer demand and incorporating practical supply chain constraints, including warehouse capacity, economic order quantities (EOQ), lead times, and product shelf life.

The model demonstrates how optimization techniques can support data-driven inventory planning and improve operational efficiency.


Technologies

  • Optimization: AMPL, CBC Solver
  • Programming: Python
  • Data Processing: Pandas
  • Analysis: Sensitivity Analysis

Problem

Traditional inventory planning often relies on fixed policies that fail to balance holding costs, ordering costs, and warehouse capacity.

Our objective was to determine:

  • Optimal order quantities
  • Inventory levels
  • Warehouse allocation strategy

while minimizing total inventory cost.


Optimization Model

The model considered:

  • Holding costs
  • Ordering costs
  • Warehouse capacity
  • EOQ requirements
  • Product shelf life
  • Lead times
  • Customer demand

The optimization objective minimized:

  • Inventory holding cost
  • Ordering cost

subject to all operational constraints.


Results

The model converged to an optimal solution of $8.93 million after 586 iterations using the CBC solver.

Key findings included:

  • A balanced 50/50 demand allocation minimized overall inventory cost.
  • Uneven allocations (70/30 and 80/20) increased costs due to warehouse underutilization.
  • Lower ordering costs significantly reduced total system cost.
  • Sensitivity analysis demonstrated the model’s flexibility under changing demand scenarios.

My Contributions

  • Developed the optimization model in AMPL.
  • Processed and cleaned inventory datasets using Python.
  • Performed sensitivity analyses for multiple demand allocation scenarios.
  • Evaluated operational trade-offs between warehouse utilization and inventory costs.
  • Visualized optimization results for decision-making.

Data Preparation

Inventory data was cleaned before optimization by:

  • Removing missing values
  • Excluding infeasible SKUs
  • Splitting demand across warehouses
  • Applying shelf-life constraints
df["WH1_demand"] = df["Item_Count"] * 0.5
df["WH2_demand"] = df["Item_Count"] * 0.5

df = df[
    (df["EOQ"] <= df["WH1_demand"] * df["Shelf_Life"]) &
    (df["EOQ"] <= df["WH2_demand"] * df["Shelf_Life"])
]

AMPL Model

View optimization model
var x {I, W, T} >= 0;
var inv {I, W, T} >= 0;
var z {I, W, T} binary;

minimize Total_Inventory_Cost:
    sum {i in I, w in W, t in T} (
        holdingCost[i] * inv[i,w,t] +
        orderingCost[i] * z[i,w,t]
    );

Key Takeaways

This project strengthened my experience in:

  • Operations Research
  • Linear Programming
  • Supply Chain Optimization
  • Inventory Management
  • AMPL Modeling
  • Python Data Processing
  • Sensitivity Analysis