Optimización de precios para maximizar la rentabilidad y el nivel de inventarios

Editado y traducido el 26 de abril del 2022 por Oswaldo Almonacid

En este artículo, brindaré una introducción general a la optimización de precios y mostraré cómo se puede facilitar la optimización de precios usando programación matemática. Ya hemos proporcionado un ejemplo de optimización de precios con funciones de demanda lineal, usando Gekko en Python en artículos previos. Este artículo analiza más de cerca la optimización de precios en un nivel gerencial más alto.

Caso de uso de optimización de precios en la industrial retail

Los precios son una poderosa palanca para que las empresas minoristas impulsen las ganancias, los ingresos, la lealtad del cliente, la penetración en el mercado, entre otros. Además, influyen en las operaciones de la cadena de suministro de una empresa, y por lo tanto, en la programación de la mano de obra y los tiempos de entrega.

Un aspecto importante y fascinante en la definición de precios es comprender el comportamiento de los clientes con respecto a los cambios de precios. Hoy en día, esto implica analizar grandes cantidades de datos a través de métodos de analítica avanzada. Por ejemplo, el análisis causal puede estimar el efecto de las campañas de marketing sobre las ventas o las ganancias, mientras que los métodos de pronóstico pueden predecir la demanda real que encontrará la empresa en el futuro cercano.

Sin embargo, incluso las mejores predicciones extraídas del pasado, ya sea ayer, la semana pasada o el año pasado, no son suficientes para tomar decisiones confiables para el futuro. De hecho, una vez que se obtienen las mejores predicciones y conocimientos, una empresa puede tener miles o millones de precios para establecer.

Por ejemplo, considera un minorista con un programa de precios semanal y solo 10 regiones de precios diferentes y 1,000 artículos en el surtido. Combinando las regiones y los artículos, tendría 10,000 precios para establecer cada semana. Asimismo, como cada decisión de precios puede influir en los precios de otras regiones y artículos, el problema requiere considerar una cantidad incluso mayor de posibles soluciones, que no se pueden manejar manualmente.

Entonces, para tener una solución de precios dinámicos moderna y efectiva, capaz de reaccionar rápidamente a los cambios en el mercado o los planes de la organización, los gerentes de precios necesitan información confiable de datos anteriores, así como un optimizador de precios que encuentra la mejor combinación de precios para alcanzar sus objetivos.

A continuación, presentaré un caso de uso para la optimización de precios, implementado con programación matemática:

Un gerente de precios de un comercio minorista de moda necesita establecer precios para la próxima semana con el objetivo de maximizar las ganancias. Además, le preocupa tener demasiadas inventarios sobrantes en las próximas semanas.

Como se explicó anteriormente, este es un ejemplo de pricing dinámicos, donde los precios se actualizan con frecuencia para reaccionar a los cambios en la demanda y otras condiciones como el inventario. Con este objetivo y restricciones en mente, construiré un optimizador de precios basado en programación matemática para generar precios óptimos para la próxima semana.

La herramienta proporcionará planes de precios rápidos y confiables para cada semana, mejorando la eficiencia y la eficacia de las decisiones de precios, así como simulaciones de políticas de precios óptimos que puedan ayudar a aclarar la relación de los precios con otras funciones de la organización, como la cadena de suministro y la gestión de inventario, mejorando aún más la comunicación entre los tomadores de decisiones.

Este ejemplo va a ser sencillo y fácil de presentar, pero el mismo enfoque y tecnología se aplica habitualmente en escenarios mucho más complicados y realistas.

Programa matemático para decisiones de precios óptimas

Para tener en cuenta la rentabilidad futura y el stock sobrante, el modelo de optimización cubrirá un horizonte de cuatro semanas. La primera semana en el horizonte proporciona los precios de la próxima semana, mientras que las otras semanas proporcionan una estimación bien fundamentada de lo que se espera para el futuro cercano. Luego, asumiremos que el gerente de precios quiere minimizar el stock sobrante al final de la cuarta semana.

Después de la semana 1, el modelo se ejecutará nuevamente en la semana 2, cubriendo hasta la semana 5 en forma de “ventana deslizante”, de modo que en la semana 2 el modelo pueda incluir nuevos datos, como valores de inventario actualizados, nuevos pronósticos de demanda, y si están presentes, nuevos objetivos impulsados ​​por el negocio.

Nota: En el entorno del mundo real, usaría un enfoque más estructurado (también conocido como “jerárquico”) donde el modelo a más largo plazo (ej. un modelo mensual que cubra el próximo trimestre) proporcionaría los objetivos del modelo semanal (ej. en inventario, ganancias, margen, etc.) para alcanzar el período de 4 semanas.

El modelo controlará estas variables o decisiones para cada semana y artículo:

  • precios
  • stocks
  • ventas

Usando las siguientes restricciones:

  • Flujo de stocks: las existencias disponibles en cada semana se venden o equdan disponibles para la próxima semana.
  • Stock en venta: en cada semana, todo el stocks está disponible para venta, no se permite retención de stock.

Y dos objetivos:

  • Maximizar la rentabilidad total
  • Minimizar el stock en exceso de la cuarta semana

Estos elementos pueden modelarse fácilmente en un programa matemático y optimizarse con algoritmos de propósito general.

  • Por simplicidad, no incluyo opciones de reabastecimiento de inventario dentro del horizonte de 4 semanas, por lo que el stock inicial es todo el stock disponible.
  • Dado que los artículos tienen precios diferentes, usaré una “notación de descuento” uniforme donde los precios se representan como un descuento del precio de lista y pueden oscilar entre el 0% y el 50%, con un incremento del 5%. Los ajustes más pequeños, como el redondeo a ‘0,99’, se pueden manejar fuera del modelo mediante un procesamiento posterior basado en reglas.

Inventario y precio como dos objetivos de optimización

Resolveré el problema con un enfoque de dos objetivos, optimizando las ganancias y las existencias en dos pasos:

  1. Max. rentabilidad: maximizar rentabilidad
  2. Max. rentabilidad / Min. stock: minimizar el stock sobrante mientras se restringe la ganancia total para que esté cerca del valor óptimo calculado en el paso 1.

minimizar el stock sobrante mientras se restringe la ganancia total para que esté cerca del valor óptimo

En la práctica, en el segundo paso, relajaré ligeramente la restricción sobre el beneficio total, permitiendo hasta un 2.5% de pérdida con respecto al valor óptimo calculado en el primer paso. De hecho, obligar a que el beneficio total permanezca demasiado cerca del óptimo puede aumentar significativamente la complejidad del modelo y deja poco espacio para que se reduzca el stock sobrante. Por otro lado, la “pérdida de ganancias” es principalmente teórica, ya que requeriría una precisión perfecta para que los pronósticos y el modelo de precios alcancen realmente el nivel óptimo.

Ejemplo de optimización de precios con surtido pequeño

Considera tres artículos: medias, jeans y camisas:

ArtículoPrecio de lista [€]Costo [€]Stock inicial
medias105290
jeans2515250
camisas4025280

Aquí puedes apreciar curvas y series de tiempo de demanda generadas aleatoriamente:

Series de tiempo de demanda (para niveles de descuento seleccionados):

Luego implementé el modelo de dos objetivos en Python con el solver de código abierto PULP/CBC. Aquí están los resultados:

KPIs del problema de optimización de precios

EscenarioPaso 1
“Max. Rentabilidad”
Paso 2
” Max. Rentabilidad / Min. Stock”
Change [%]
Ganancia [€]5,5175,381-2.5
Ingresos [€]15,30516,543+8.0
Stock sobrante [units]19988-56.0

Análisis de stock sobrante resultante de las decisiones de pricing

ArtículoPaso 1
“Max. Rentabilidad”
Paso 2
” Max. Rentabilidad / Min. Stock”
Change [%]
Medias10434-67.6
Jeans47470.0
Camisas477-86.3

Análisis de unidades vendidas como resultado de las decisiones de descuento

La solución final consigue una alta rentabilidad (97.5% del máximo teórico) y con el mínimo remanente de stock posible para ese nivel de beneficio.

En comparación con la solución puramente maximizadora de rentabilidad del primer paso, la solución del segundo paso reduce el stock sobrante en un 50% al aumentar los descuentos en medias y camisas para impulsar sus ventas.

Observaciones finales sobre el caso de uso de optimización de precios

Mediante el uso de la tecnología adecuada, como la programación matemática, los responsables de la toma de decisiones pueden encontrar soluciones eficaces para problemas de decisión complejos con objetivos competitivos. De hecho, a medida que se dispara el número de posibles soluciones para estos problemas, aumenta la probabilidad de tener soluciones sorprendentemente buenas. El problema es entonces utilizar la herramienta adecuada para encontrarlos rápidamente.

En este artículo también toqué el tema de la optimización multiobjetivo. Si estás interesado en la optimización multiobjetivo, puedes encontrar varios ejemplos que implementan la optimización multiobjetivo en Python en algunas referencias que pueden ser de tu interés:

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Close

Meta