Ubicación de plantas con capacidad: caso práctico P2

Analítica de la cadena de suministro en Python

Aaren Stubberfield

SuSupply Chain Analytics Mgr.

Modelo de ubicación de plantas con capacidad

Modelización

  • Producción en centros regionales
    • Dos tamaños de planta (baja / alta)
  • Exportar producción a otras regiones
  • Apertura / cierre de plantas

imagen de globo con producción regional

Analítica de la cadena de suministro en Python

Variables de decisión

Qué controlamos:

  • x$_{\text{ij}}$ = cantidad producida en la ubicación _i_ y enviada a _j_
  • y$_{\text{is}}$ = 1 si la planta en _i_ con capacidad _s_ está abierta; 0 si cerrada
    • s = planta de capacidad baja o alta
Analítica de la cadena de suministro en Python

Restricciones

  • Producción total = Demanda total
    • $\sum_{i=1}^{n}$ x$_{ij}$ = D$_{\text{j}}$ para $j = 1, ..., m$
    • $n$ = número de plantas de producción
    • $m$ = número de mercados o puntos de demanda regionales
Analítica de la cadena de suministro en Python

Restricciones

  • Producción total ≤ Capacidad total
    • $\sum_{j=1}^{m}$ x$_{ij}$ ≤ $\sum_{s=1}$ K$_{is}$y$_{is}$
    • K$_{is}$ = capacidad potencial de producción de la planta _i_ de tamaño _s_
Analítica de la cadena de suministro en 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='Continuous')
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]))
Analítica de la cadena de suministro en Python

Ejemplo de código (cont.)

# Define the Constraints
for j in loc:
   model += lpSum([x[(i, j)] for i in loc]) == demand.loc[j,'Dmd']

for i in loc: model += lpSum([x[(i, j)] for j in loc]) <= lpSum([cap.loc[i,s]*y[(i,s)] for s in size])
Analítica de la cadena de suministro en Python

Resumen

Modelo de ubicación de plantas con capacidad:

  • Restricciones
    • Producción total = Demanda total
    • Producción total ≤ Capacidad total
Analítica de la cadena de suministro en Python

Repaso

Analítica de la cadena de suministro en Python

Preparing Video For Download...