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

Domina tus Pedidos: Modelo de Inventario Multiproducto con Restricción de Órdenes
Gestión de Inventarios

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:

\[ L(Q_1, Q_2, \lambda) = \left( \frac{D_1 Co_1}{Q_1} + \frac{Q_1 (i C_1)}{2} \right) + \left( \frac{D_2 Co_2}{Q_2} + \frac{Q_2 (i C_2)}{2} \right) \] \[+ \lambda \left( \frac{D_1}{Q_1} + \frac{D_2}{Q_2} - 15 \right) \]

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:

\[ \frac{\partial L}{\partial Q_1} = -\frac{D_1 Co_1}{Q_1^2} + \frac{i C_1}{2} - \frac{\lambda D_1}{Q_1^2} = 0 \implies Q_1^2 = \frac{D_1 (Co_1 + \lambda)}{\frac{i C_1}{2}} \] \[ \frac{\partial L}{\partial Q_2} = -\frac{D_2 Co_2}{Q_2^2} + \frac{i C_2}{2} - \frac{\lambda D_2}{Q_2^2} = 0 \implies Q_2^2 = \frac{D_2 (Co_2 + \lambda)}{\frac{i C_2}{2}} \] \[ \frac{\partial L}{\partial \lambda} = \frac{D_1}{Q_1} + \frac{D_2}{Q_2} - 15 = 0 \]

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 numpy y fsolve de scipy.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 fsolve con 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.

Descarga la hoja de cálculo de ejemplo

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.

Mira un video sobre gestión de inventarios

Entradas populares de este blog

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

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

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

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

¡Plan Desagregado de Producción como un jefe!

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!