Capacitated plant location - case study P1

Supply Chain Analytics in Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Context

Multiple options to meet regional product demand

Option Pro Con
Small manufacturing facilities within region Low transportation costs, few to no tariffs or duties Overall network may have excess capacity, cannot take advantage economies of scale
A few large manufacturing plants and ship product to region Economies of scale Higher transportation, higher tariffs and duties

Supply Chain Analytics in Python

Capacitated plant location model

  • Capacitated Plant Location Model$^{1}$
  • The goal is to optimize global Supply Chain network
    • Meet regional demand at the lowest cost
    • Determine regional production of a product
1 Chopra, Sunil, and Peter Meindl. _Supply Chain Management: Strategy, Planning, and Operations._ Pearson Prentice-Hall, 2007.
Supply Chain Analytics in Python

Capacitated plant location model

Modeling

  • Production at regional facilities
    • Two plant sizes (low / high)
  • Exporting production to other regions
  • Production facilities open / close

image of globe with regional production

Supply Chain Analytics in Python

Decision variables

What we can control:

  • $x_{ij}$ = quantity produced at location _i_ and shipped to _j_
  • $y_{is}$ = 1 if the plant at location _i_ of capacity _s_ is open, 0 if closed
    • $s$ = low or high capacity plant
Supply Chain Analytics in Python

Objective function

Minimize $z = \sum_{i=1}^{n}(f_{is} y_{is}) + \sum_{i=1}^{n} \sum_{i=1}^{m} (c_{ij} x_{ij})$

  • $c_{ij}$ = cost of producing and shipping from plant _i_ to region _j_
  • $f_{is}$ = fixed cost of keeping plant _i_ of capacity _s_ open
  • $n$ = number of production facilities
  • $m$ = number of markets or regional demand points
Supply Chain Analytics in Python
from pulp import *

# Initialize Class
model = LpProblem("Capacitated Plant Location Model", LpMinimize)

# Define Decision Variables
loc = ['A', 'B', 'C', 'D', 'E']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production",[(i,j) for i in loc for j in loc], 
                      lowBound=0, upBound=None, cat='Continous')
y = LpVariable.dicts("plant",[(i,s) for s in size for i in loc], cat='Binary')

# Define objective function model += (lpSum([fix_cost.loc[i,s]*y[(i,s)] for s in size for i in loc]) + lpSum([var_cost.loc[i,j]*x[(i,j)] for i in loc for j in loc]))
Supply Chain Analytics in Python

Summary

Capacitated Plant Location Model:

  • Finds a balance between the number of production facilities
  • Model decision variables:
    • Quantity of production in a region and exported
    • High or low capacity facilities open or closed
  • Reviewed objective function
    • Sums variable and fixed production costs
  • Reviewed code example
Supply Chain Analytics in Python

Review time

Supply Chain Analytics in Python

Preparing Video For Download...