¡Plan Desagregado de Producción como un jefe!
Fuente: Webflow
¡El plan desagregado de producción desafía los límites de la eficiencia! Divide el proceso en pasos manejables para maximizar recursos, reducir costos y mejorar la respuesta al mercado.
Con 2500 horas hombre disponibles, optimizamos la secuencia de producción de 4 productos (A, B, C, D) usando programación lineal para maximizar el tiempo de ciclo \( T \).
Datos del Problema
| A | B | C | D | Total | |
|---|---|---|---|---|---|
| Demanda (\( D_j \)) | 400 | 600 | 800 | 700 | 2500 |
| Inventario (\( I_j \)) | 200 | 400 | 500 | 300 | 1400 |
| Días de Inventario (\( r_j \)) | 0.5 | 0.666 | 0.625 | 0.428 | - |
Verificación: \( 400 + 600 + 800 + 700 = 2500 \) horas hombre disponibles.
Secuencia de Producción Inicial
Orden por días de inventario: D → A → C → B
t_D---------->t_A------->t_C----------->t_B---------->t_D+T
|<--------------------------------T------------------------------->|
La programación de la producción de los artículos sigue el orden descrito en el gráfico de arriba: \( t_D \to t_A \to t_C \to t_B \to t_D + T \)
Modelo de Programación Lineal
Función Objetivo
Restricciones de Demanda
Restricciones de Inventario
Resultados Óptimos
- Tiempo de ciclo (\( T \)): 0.8772
- Inicio de producción:
- \( t_D = 0 \)
- \( t_A = 0.2453 \)
- \( t_C = 0.3855 \)
- \( t_B = 0.666 \)
¡Producción eficiente sin agotar inventario!
Resolución en Python con PuLP
import pulp as lp
# Datos
productos = ['A', 'B', 'C', 'D']
demanda = [400, 600, 800, 700]
inventario = [200, 400, 500, 300]
P = 2500
# Días de inventario
r = [i/d for i, d in zip(inventario, demanda)]
orden = sorted(range(4), key=lambda i: r[i])
# Modelo
prob = lp.LpProblem("Produccion", lp.LpMaximize)
t = [lp.LpVariable(f"t{j}", lowBound=0) for j in range(4)]
T = lp.LpVariable("T", lowBound=0)
prob += T
# Restricciones
prob += (t[0] - t[3]) * P >= T * demanda[3]
prob += (t[2] - t[0]) * P >= T * demanda[0]
prob += (t[1] - t[2]) * P >= T * demanda[2]
prob += (t[3] + T - t[1]) * P >= T * demanda[1]
for i in range(4):
prob += t[i] <= r[i]
prob.solve()
print("T =", lp.value(T))
for i in range(4):
print(f"t{productos[i]} =", lp.value(t[i]))
Resultado: \( T = 0.8772 \), tiempos óptimos como se muestran arriba.
Referencias
[1] Operations and Supply Chain Management – Prof. G. Srinivasan, IIT Madras.
[2] Planeación y control de la producción – Sipper, Bulfin, González Osuna.