¡Plan Desagregado de Producción como un jefe!

Plan Desagregado de Producción: Optimización con Programación Lineal
Gráfico de demanda agregada

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

\[ \text{Maximizar } T \]

Restricciones de Demanda

\[(t_A - t_D) \cdot 2500 \geq T \cdot 700\] \[(t_C - t_A) \cdot 2500 \geq T \cdot 400\] \[(t_B - t_C) \cdot 2500 \geq T \cdot 800\] \[(t_D + T - t_B) \cdot 2500 \geq T \cdot 600\]

Restricciones de Inventario

\[ t_D \leq 0.428, \quad t_A \leq 0.5, \quad t_C \leq 0.625, \quad t_B \leq 0.666 \] \[ t_j, T \geq 0 \]

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.

Entradas populares de este blog

Cómo Equilibrar Múltiples Productos con Pedidos a la Medida

Maximiza la rentabilidad de tu negocio: Cómo optimizar la selección de proveedores de mercancías.

Cómo Realizar One-Hot Encoding en Power BI: Guía Paso a Paso para Principiantes y Expertos

Análisis ABC en Power BI con DAX: Guía Completa para Profesionales

Descubriendo el Poder de los Modelos de Clasificación en Machine Learning: Predicciones Precisas y Clasificaciones Sorprendentes

Optimización del Inventario Multiproducto en Espacios Reducidos: Una guía para la eficiencia en gestión de stocks

Domina tu Almacén sin arruinarte: El Juego del Modelo de Inventario Múltiproductos con Presupuesto ajustado

El Desafío del Empaque en Contenedores: Optimizando Espacios en contenedores con Ingenio

¡Optimización de Portafolios de Productos: El arte de maximizar el rendimiento!