Otimização de preços para o máximo de lucro e controle de estoque

Neste artigo, apresentarei uma introdução geral aos benefícios da otimização dos preços. Além disso, demonstrarei como a otimização de preços pode ser facilitada com a programação matemática. Em artigos anteriores já fornecemos um exemplo sobre preços ideais com funções de demanda linear, usando Gekko em Python. Este artigo analisa de perto a otimização de preços em um nível de abstração gerencial mais alto.

Caso de uso de otimização de preços no varejo

Os preços são uma poderosa alavanca para as empresas de varejo para impulsionar lucros, receitas, bem como fidelização de clientes, penetração no mercado, assim por diante. Eles também influenciam as operações da cadeia de suprimentos da empresa e, assim, o agendamento e os prazos de entrega da força de trabalho.

Um aspecto importante e fascinante da precificação é entender o comportamento dos clientes em relação às mudanças de preços. Hoje em dia isso envolve analisar grandes quantidades de dados através de métodos de ciência de dados.

Por exemplo, a análise causal pode estimar o efeito de campanhas de marketing sobre vendas ou lucro, enquanto métodos de previsão podem prever a demanda real que o negócio encontrará em um futuro próximo.

No entanto, mesmo as melhores previsões extraídas do passado, seja ontem, na última semana ou no ano passado, não são suficientes para tomar decisões confiáveis para o futuro.

De fato, uma vez que a melhor previsão e insights estão dentro, uma empresa pode ter milhares ou milhões de preços para definir. Por exemplo, considere um varejista com um cronograma de preços semanal e apenas 10 regiões de preços diferentes e 1000 artigos no sortimento. Ela teria então 10.000 preços para definir a cada semana.

Como cada decisão de preços pode influenciar outros preços, o problema requer considerar uma enorme quantidade de soluções possíveis, que não podem ser tratadas manualmente.

Então, para ter uma solução de preços dinâmico moderna e eficaz, ou seja, capaz de reagir rapidamente às mudanças no mercado ou nos planos da organização, os gerentes de preços precisam de insights confiáveis de dados passados, bem como um otimizador de preços que encontre a melhor combinação de preços para atingir seus objetivos.

A seguir, apresentarei este caso de uso para otimização de preços, implementado com programação matemática:

Um gerente de preços para um varejista de moda precisa definir os preços para a próxima semana para maximizar o lucro. Ela também se preocupa em ter muito estoque sobrando nas próximas semanas.

Como explicado acima, este é um exemplo de preços dinâmicos, onde os preços são atualizados com frequência para reagir a mudanças na demanda e outras condições como o estoque. Construirei então um otimizador de preços baseado na programação matemática para gerar bons preços para a próxima semana, de acordo com as metas dadas.

A ferramenta fornecerá planos de preços rápidos e confiáveis para cada semana, melhorando a eficiência e a eficácia das decisões de preços, bem como simulações de políticas de preços ideais que podem ajudar a esclarecer a relação dos preços com outras funções da organização, como cadeia de suprimentos e gerenciamento de estoque, melhorando ainda mais a comunicação entre os tomadores de decisão.

O exemplo aqui fornecido será muito simples e fácil de apresentar, mas a mesma abordagem e tecnologia é rotineiramente aplicada em cenários muito mais complicados e realistas.

Um programa matemático para decisões de preços ideais

Para dar conta da rentabilidade futura e do estoque que sobra, o modelo de otimização cobrirá um horizonte de quatro semanas. A primeira semana no horizonte fornece os preços para a próxima semana,
enquanto os outros fornecem um “palpite educado” do que esperar para um futuro próximo. Então assumo que o gerente de preços quer minimizar o estoque de sobra no final da 4ª semana.

Price optimization example

Após a semana 1, o modelo será executado novamente na semana 2, cobrindo até a semana 5, de forma “janela deslizante”, para que na semana 2 o modelo possa incluir novos dados, como os valores
atualizados de estoque, novas previsões de demanda e, se houver, novas metas voltadas para os negócios.

Nota: No cenário do mundo real, eu usaria uma abordagem mais estruturada (também conhecida como “hierárquica”) onde um modelo delongo prazo, por exemplo, um modelo mensal cobrindo o próximo
trimestre, forneceria as metas semanais do modelo, por exemplo, sobre estoque, lucro, margem etc…, para alcançar o período de 4 semanas.

O modelo controlará essas variáveis ou decisões para cada semana e artigo:

  • preços
  • estoque
  • venda

e ter as restrições:

  • “fluxo de estoque”: o estoque disponível a cada semana é vendido ou fica disponível para a próxima semana
  • “ações à venda”: em cada semana todas as ações estão disponíveis para venda, nenhuma retenção de ações é permitida

E dois objetivos:

  • maximizar o lucro total
  • minimizar o estoque de sobra da 4ª semana

Esses elementos podem ser facilmente modelados em um programa matemático e otimizados com algoritmos de propósito geral.

Mais alguns detalhes sobre o problema do exemplo:

  • Para simplificar, não incluo opções de reposição de estoque dentro do horizonte de 4 semanas, então o estoque inicial é todo o estoque disponível.
  • Como os artigos têm preços diferentes, usarei uma “notação de desconto” uniforme onde os preços são representados como desconto do preço de tabela, podendo variar entre 0% e 50%, com um passo de 5%. Ajustes menores como arredondamento para ‘0,99’ podem ser tratados fora do modelo por algum pós-processamento baseado em regras.

Estoque e preço como dois objetivos de otimização

Resolverei o problema com uma abordagem bi-objetiva, otimizando para lucro e estoque em duas etapas:

1. “Max-profit”: Maximizar o lucro,
2. “Max-profit/min-stock”: Minimize as ações que sobraram, restringindo
o lucro total para estar perto do valor ideal calculado na etapa 1.

Na prática, na segunda etapa vou relaxar um pouco a restrição sobre o lucro total, permitindo uma perda de até 2,5% w.r.t. o valor ideal calculado na primeira etapa. De fato, forçar o lucro total a ficar muito perto do ideal pode aumentar significativamente a complexidade do modelo e deixa pouco espaço para que o estoque que sobra seja reduzido. Por outro lado, a “perda de lucro” é principalmente teórica, pois exigiria uma precisão perfeita para as previsões e o modelo de preços para realmente alcançar o ideal.

Exemplo de otimização de preços com pequeno sortimento

Considere três itens – jeans, camisas e meias, com os dados:

ArtigoPreço de tabela [€]Custo [€]Estoque inicial
meias105290
jeans2515250
camisas4025280

Aqui estão as curvas de demanda (geradas aleatoriamente) e a série de tempo de demanda:

Série de tempo de demanda (para níveis de desconto selecionados):

Implementei então o esquema bi-objetivo em python com o solucionador de uso geral de código aberto PULP/CBC. Aqui estão os resultados:

Principais indicadores de desempenho do problema de otimização de preços

CenárioPasso 1
“Lucro Máximo”
Passo 2
” Max-Lucro / Min-Stock”
Mudança [%]
Lucro [€]55175381-2.5
Receita [€]1530516543+8.0
Estoque sobrando [unidades]19988-56.0

Análise das ações que sobraram resultantes de decisões de preços

ArtigoPasso 1
“Lucro Máximo”
Passo 2
“Max-Profit / Min-Stock”
Mudança [%]
meias10434-67.6
jeans47470.0
camisas477-86.3

Análise das unidades vendidas como resultado de decisões de desconto

A solução final alcança alta rentabilidade (97,5% do máximo teórico) e com o valor mínimo de estoque sobra possível para esse nível de lucro.

Em comparação com a solução puramente maximizadora de lucros na primeira etapa, a solução na segunda etapa reduz o estoque de sobra em 50% aumentando os descontos para meias e camisas para impulsionar suas vendas.

Concluindo observações sobre caso de uso de otimização de preços

Usando tecnologia apropriada, como programação matemática, os tomadores de decisão podem encontrar soluções eficazes para problemas de decisão complexos com metas concorrentes. De fato, à medida que o número de possíveis soluções para esses problemas explode, aumenta a probabilidade de ter soluções surpreendentemente boas; o problema é, então, usar a ferramenta certa para encontrá-los rapidamente.

Neste artigo também toquei no tema da otimização multidisciplinar. Se você estiver interessado em otimização multi-objetiva, você pode encontrar vários exemplos implementando otimização multi-objetiva em Python aqui neste blog. Aqui está uma visão geral de algumas referências que podem ser de seu interesse:

Leave a Reply

Deixe um comentário

O seu endereço de e-mail não será publicado.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Close

Meta