Cómo Equilibrar Múltiples Productos con Pedidos a la Medida
Créditos: mygestion.com
¿Alguna vez has sentido que gestionar un almacén es como bailar una coreografía imposible? Productos que entran y salen, clientes que esperan, y un límite de pasos (¡o pedidos!) que no puedes exceder. ¡No te preocupes! Hoy te guiaremos por un modelo de inventario multiproducto que hará que tus pedidos fluyan como una danza perfecta, respetando una restricción de 15 pedidos al año.
Con este modelo, aprenderás a ajustar cuánto pedir y cuándo hacerlo, manteniendo los costos bajo control. ¡Prepárate para una aventura numérica llena de estrategia y diversión!
¿Por qué Optimizar los Pedidos?
En el mundo empresarial, optimizar los pedidos es clave para:
- Reducir costos: Menos gastos en pedidos y almacenamiento.
- Evitar faltantes: Asegura que los clientes encuentren lo que buscan.
- Controlar pedidos: Cumple con límites operativos, como 15 pedidos al año.
- Mejorar la eficiencia: Clientes felices y operaciones fluidas.
Este modelo es tu coreografía estelar: equilibra demanda, costos y restricciones para que tu almacén brille.
Nuestro Escenario
Imagina un almacén con dos productos estrella:
- Artículo 1: Varita
- Demanda (\(D_1\)): 10,000 unidades/año
- Costo de ordenar (\(Co_1\)): $300/orden
- Costo unitario (\(C_1\)): $20/unidad
- Costo de mantener (\(i \cdot C_1\)): 20% ($4/unidad/año)
- Artículo 2: Poción
- Demanda (\(D_2\)): 20,000 unidades/año
- Costo de ordenar (\(Co_2\)): $300/orden
- Costo unitario (\(C_2\)): $25/unidad
- Costo de mantener (\(i \cdot C_2\)): 20% ($5/unidad/año)
Restricción: El número total de pedidos al año debe ser exactamente 15.
El Desafío: Demasiados Pedidos
Calculamos las cantidades económicas de pedido (EOQ) sin considerar la restricción de pedidos:
- Varita: \(Q_1 = \sqrt{\frac{2 \cdot D_1 \cdot Co_1}{i \cdot C_1}} = \sqrt{\frac{2 \cdot 10,000 \cdot 300}{0.2 \cdot 20}} \approx 1222.74\) unidades, costo: $4,898.98, pedidos: \(\frac{D_1}{Q_1} = \frac{10,000}{1222.74} \approx 8.16\).
- Poción: \(Q_2 = \sqrt{\frac{2 \cdot D_2 \cdot Co_2}{i \cdot C_2}} = \sqrt{\frac{2 \cdot 20,000 \cdot 300}{0.2 \cdot 25}} \approx 1549.19\) unidades, costo: $7,745.97, pedidos: \(\frac{D_2}{Q_2} = \frac{20,000}{1549.19} \approx 12.91\).
- Total pedidos: \(8.16 + 12.91 \approx 21.07\).
¡Ups! Esto excede los 15 pedidos permitidos. Necesitamos ajustar las cantidades para cumplir con la restricción sin disparar los costos.
La Magia del Multiplicador de Lagrange
Usamos el método de los multiplicadores de Lagrange para minimizar los costos totales sujetos a la restricción de 15 pedidos. La función de Lagrange es:
Donde:
- \(Q_1, Q_2\): Cantidades de pedido para cada artículo.
- \(\lambda\): Multiplicador de Lagrange (costo adicional por pedido).
- Restricción: \(\frac{D_1}{Q_1} + \frac{D_2}{Q_2} = 15\).
Derivamos con respecto a \(Q_1\), \(Q_2\), y \(\lambda\), e igualamos a cero:
Resolviendo numéricamente, encontramos \(\lambda \approx 200.68\). Sustituyendo:
- Varita: \(Q_1 = \sqrt{\frac{10,000 (300 + 200.68)}{\frac{0.2 \cdot 20}{2}}} \approx 1720.72 \approx 1721\) unidades.
- Poción: \(Q_2 = \sqrt{\frac{20,000 (300 + 200.68)}{\frac{0.2 \cdot 25}{2}}} \approx 2176.61 \approx 2177\) unidades.
- Pedidos: \(\frac{10,000}{1721} \approx 5.81\), \(\frac{20,000}{2177} \approx 9.19\), total \(\approx 15\).
El valor de \(\lambda \approx 200.68\) indica un costo adicional por pedido para cumplir la restricción.
Resolviendo con Python: Automatizando la Danza
¿Listo para automatizar esta coreografía? Usemos Python con SciPy para hallar \(\lambda\), \(Q_1\), y \(Q_2\). Este script resuelve las ecuaciones no lineales y verifica la restricción de pedidos.
Requisitos: Instala Python, NumPy, y SciPy (pip install numpy scipy). Ejecuta en tu máquina o en Google Colab
import numpy as np
from scipy.optimize import fsolve
# Datos del problema
D1, D2 = 10000, 20000 # Demanda anual (unidades/año)
Co1, Co2 = 300, 300 # Costo de ordenar ($/orden)
C1, C2 = 20, 25 # Costo unitario ($/unidad)
i = 0.2 # Tasa de interés (20%)
N = 15 # Restricción de pedidos
# Costo de mantener inventario
h1 = i * C1 # $4/unidad/año
h2 = i * C2 # $5/unidad/año
# Sistema de ecuaciones del método de Lagrange
def equations(vars):
Q1, Q2, lambda_ = vars
eq1 = -D1 * (Co1 + lambda_) / Q1**2 + h1 / 2
eq2 = -D2 * (Co2 + lambda_) / Q2**2 + h2 / 2
eq3 = D1 / Q1 + D2 / Q2 - N
return [eq1, eq2, eq3]
# Resolver el sistema
Q1, Q2, lambda_ = fsolve(equations, [1500, 2000, 200])
# Calcular costos totales
TC1 = (D1 * Co1 / Q1) + (Q1 * h1 / 2)
TC2 = (D2 * Co2 / Q2) + (Q2 * h2 / 2)
total_cost = TC1 + TC2
total_orders = D1 / Q1 + D2 / Q2
# Mostrar resultados
print(f"Cantidad óptima Q1 (Varita): {Q1:.2f} unidades")
print(f"Cantidad óptima Q2 (Poción): {Q2:.2f} unidades")
print(f"Multiplicador de Lagrange (λ): {lambda_:.2f} $/pedido")
print(f"Costo total Varita: ${TC1:.2f}/año")
print(f"Costo total Poción: ${TC2:.2f}/año")
print(f"Costo total combinado: ${total_cost:.2f}/año")
print(f"Total pedidos: {total_orders:.2f}")
Resultados del código:
- Cantidad óptima \(Q_1\) (Varita): 1720.72 unidades
- Cantidad óptima \(Q_2\) (Poción): 2176.61 unidades
- Multiplicador de Lagrange (\(\lambda\)): 200.68 $/pedido
- Costo total Varita: $5,807.70/año
- Costo total Poción: $9,187.27/año
- Costo total combinado: $14,994.97/año
- Total pedidos: 15.00 (¡cumple la restricción!)
¿Cómo funciona el código?
- Paso 1: Importamos
numpyyfsolvedescipy.optimize. - Paso 2: Definimos los datos (demandas, costos, restricción).
- Paso 3: Planteamos las ecuaciones derivadas de la función de Lagrange.
- Paso 4: Usamos
fsolvecon valores iniciales ([1500, 2000, 200]) para hallar \(Q_1\), \(Q_2\), y \(\lambda\). - Paso 5: Calculamos costos totales y verificamos la restricción.
Resultados de la Optimización
La política optimizada es:
- Varita Encantada: Ordenar 1721 unidades.
- Pedidos: \(\frac{D_1}{Q_1} = \frac{10,000}{1721} \approx 5.81\).
- Costo total: \(\frac{D_1 Co_1}{Q_1} + \frac{Q_1 (i C_1)}{2} = \frac{10,000 \cdot 300}{1721} + \frac{1721 \cdot 4}{2} \approx 5807.70 \, \$/\text{año}\).
- Poción de Transformación: Ordenar 2177 unidades.
- Pedidos: \(\frac{D_2}{Q_2} = \frac{20,000}{2177} \approx 9.19\).
- Costo total: \(\frac{D_2 Co_2}{Q_2} + \frac{Q_2 (i C_2)}{2} = \frac{20,000 \cdot 300}{2177} + \frac{2177 \cdot 5}{2} \approx 9187.27 \, \$/\text{año}\).
Total pedidos: \(5.81 + 9.19 \approx 15\).
Costo total combinado: \(5807.70 + 9187.27 = 14994.97 \, \$/\text{año}\).
Comparamos con los valores iniciales:
- Costo inicial: $12,644.95/año.
- Total pedidos inicial: 21.07 (¡excede el límite!).
- Aumento en cantidades: Las cantidades de pedido son ~140.7% de las iniciales (\(\frac{1721}{1222.74} \approx 140.7\%\), \(\frac{2177}{1549.19} \approx 140.5\%\)).
Visualización de Costos
Este gráfico compara los costos totales iniciales y optimizados:
Análisis del Impacto
¿Qué logramos con esta optimización?
- Cumplimiento de la restricción: Redujimos los pedidos de 21.07 a 15, cumpliendo el límite.
- Costos controlados: El costo total aumentó un 18.6% (\(\frac{14994.97 - 12644.95}{12644.95} \approx 0.186\)), un precio razonable por menos pedidos.
- Eficiencia operativa: Menos pedidos significan menor carga administrativa, aunque con lotes más grandes.
Casos Prácticos
Este modelo es ideal para escenarios reales:
- Tiendas minoristas: Optimiza pedidos de productos de alta rotación con límites logísticos.
- E-commerce: Reduce la frecuencia de pedidos para minimizar costos operativos.
- Manufactura: Gestiona insumos con restricciones en la capacidad de transporte.
Por ejemplo, un e-commerce podría usar este modelo para limitar los pedidos de productos electrónicos y accesorios a 15 al año, optimizando costos logísticos.
Limitaciones y Extensiones
El modelo es poderoso, pero tiene limitaciones:
- Demanda constante: Asume demandas fijas, lo que no siempre ocurre.
- Dos productos: Escalable, pero requiere más ecuaciones para más productos.
- Sin otras restricciones: No considera límites de presupuesto o espacio.
Extensiones posibles:
- Incluir demandas variables con modelos estocásticos.
- Agregar restricciones de presupuesto o capacidad de almacenamiento.
- Optimizar multiobjetivo para balancear costos y tiempos de entrega.
Consejos para Implementar esta Coreografía
¿Listo para bailar al ritmo del inventario? Aquí van algunos consejos:
- Usa herramientas: Python, Excel Solver o software como SAP pueden calcular \(\lambda\) y cantidades óptimas.
- Valida tus datos: Asegúrate de que demandas y costos sean precisos.
- Revisa trimestralmente: Ajusta el modelo según cambios en la demanda.
- Capacita a tu equipo: Explica el modelo para alinear al personal.
- Explora alternativas: Considera consolidar proveedores si los pedidos siguen siendo un problema.
Preguntas Frecuentes (FAQ)
¿Qué es el multiplicador de Lagrange?
Es una herramienta matemática que optimiza costos sujetos a restricciones. Aquí, \(\lambda \approx 200.68\) representa un costo adicional por pedido para cumplir con 15 pedidos al año.
¿Por qué aumentaron los costos?
Al aumentar las cantidades de pedido para reducir los pedidos a 15, se incrementan los costos de almacenamiento. El aumento del 18.6% es el precio por cumplir la restricción.
¿Puedo usar este modelo con más productos?
¡Sí! Agrega más términos a la función de Lagrange y ajusta la restricción. El código Python es escalable para más variables.
Conclusión
Gestionar un inventario con una restricción de pedidos es como bailar una coreografía precisa: cada paso cuenta. Con este modelo, logramos reducir los pedidos a 15 al año, manteniendo los costos bajo control. Usa el código Python, personaliza la hoja de cálculo, y haz que tu almacén baile al ritmo de la eficiencia.
Créditos: Basado en Operations and Supply Chain Management por Prof. G. Srinivasan, IIT Madras.