Saltar para o conteúdo

Use Case

Previsão de Múltiplos Produtos na Indústria da Construção

Paulo Maia · 9 de novembro de 2021

Neste artigo, abordamos um caso de uso na indústria da construção relacionado com a previsão dos materiais necessários para a construção e o momento em que serão necessários. Na indústria da construção, existe muita incerteza entre o momento da encomenda e o momento em que é realmente executada, devido a vários fatores que serão descritos em detalhe abaixo.

Problema de Negócio

Consideremos o caso em que queremos adquirir materiais de indústria pesada a um fornecedor, mas apenas temos uma estimativa de alto nível da quantidade que necessitaremos. Não temos certeza imediata sobre as características e timing exatos dos materiais que serão necessários, pois pode haver atrasos no projeto e mudanças entre a encomenda e a execução. Temos clientes que estão a executar construções e contactam-nos com encomendas preliminares com os seus requisitos.

Precisamos de saber várias coisas sobre este processo:

  • Quando é que este cliente específico vai executar a encomenda?
  • Que características de material serão preferíveis para este cliente?
  • Que materiais é melhor manter em stock neste momento e em que quantidade? Ele precisa de algum tempo fixo (por exemplo 4 semanas) para os fabricar e transportar para uma unidade de armazenamento. Se mantivermos pouco stock, atrasaremos a construção. Se tivermos demasiado, os materiais não utilizados podem degradar-se e desperdiçar capacidade de armazenamento valiosa.

Entidades de Dados

Consideremos as seguintes entidades de dados e os dados históricos associados para este problema:

Para cada parte interessada envolvida no processo, existem fatores que causam incerteza nas questões descritas acima. Podemos sobrestimar ou subestimar a quantidade/qualidade dos materiais necessários (tanto por informações imprecisas dos projetos de construção como por incertezas internas nas estimativas). Os construtores podem desperdiçar ou usar de forma mais eficiente determinado material. O atraso entre encomenda e execução depende da complexidade do processo de construção, época do ano (férias!), e constrangimentos do fornecedor, entre outros.

Características Relevantes

Existem algumas características relevantes que podem ser extraídas para tornar este problema mais fácil de prever:

  • Construção x Material: Quantidade e tipo de cada material necessário no momento da encomenda e no momento da execução para uma determinada construção. Isto diz-nos quais as construções que sobrestimaram e subestimaram certos materiais, e qual foi o atraso entre encomenda e execução. Será utilizado para construir os objetivos do nosso problema.
  • Builder/Supplier: Estatísticas das diferenças históricas na quantidade/características dos materiais entre o momento da encomenda e o momento da execução (por exemplo, encomendou 3 toneladas de cimento, apenas precisou de 2,5 nos últimos 3 meses, em média)
  • Time: Época do ano (mês, trimestre, estação, …) e características históricas da diferença entre momento da encomenda e momento da execução.

Modelação

Para efeitos de simplificação, assumamos que queremos prever apenas um material: por exemplo vigas necessárias para uma unidade única na construção.

Precisamos de determinar:

  • Número necessário de vigas
  • Tempo até a encomenda ser executada, depois de ser encomendada com algumas características iniciais

Opção 1 – Modelo de Regressão Multitarefa

Nesta abordagem inicial, pegamos nas características no momento da encomenda e tentamos prever o número de vigas necessárias e o número de dias entre encomenda e execução. Isto é feito utilizando um modelo multitarefa, com duas tarefas de regressão.

As vantagens desta abordagem são que é fácil de implementar, os objetivos são fáceis de interpretar, torna o modelo mais robusto e pode aumentar o desempenho. No entanto, existem várias desvantagens:

  • Existe um conjunto de modelos definidos para as vigas (SKU – Stock Keeping Unit) e o modelo pode estar a prever configurações de vigas que não existem!
  • Processo de decisão difícil: Não existe forma de medir confiança na predição quando tudo o que temos é um valor.
  • Convergência difícil: o domínio de valores possíveis é muito grande e não é fácil dizer se uma previsão é boa ou não.

Opção 2 – Classificação Multitarefa

Podemos alternativamente construir um modelo de classificação multitarefa, onde consideramos duas tarefas:

  • Se as vigas de execução na nossa hipótese correspondiam a uma certa viga em stock. Isto significa que teremos de criar amostras artificiais no nosso dataset: 1 linha positiva e N linhas negativas, onde N é o número de vigas possíveis.
  • Probabilidade do número de dias entre data atual e execução ser inferior a N semanas. Isto exigirá gerar datas aleatórias entre data de encomenda e data de execução. O valor de N é determinado de acordo com as necessidades de produção e transporte para armazéns do nosso cliente.

A tabela abaixo mostra um exemplo de como esta amostragem artificial teria o seguinte aspecto:

Sampling Date: Datas aleatoriamente amostradas entre order_date e execution_date

Execution Beam Width (hypothesis): A comparação que estamos a fazer. Estes são os valores de vigas que estão em stock.

Execution Beam Width: O que realmente aconteceu. Utilizamos a comparação com "Execution Beam Width (hypothesis)" como objetivo.

Em azul estão mostradas as linhas onde o objetivo é positivo, e em laranja onde é negativo. Por exemplo, uma data de amostragem de 25/02/2021 está suficientemente próxima da nossa data de execução para ser considerada como objetivo positivo para previsão, enquanto 20/02/2021 não está. Em termos de vigas de execução, o objetivo é positivo quando as pré-encomendas e a execução coincidem.

Arquitetura do Modelo

Relativamente à arquitetura do modelo, podemos construir um modelo de dois fluxos: separamos as características que pertencem ao atraso entre encomenda e execução e a diferença entre material encomendado e executado, uma vez que teremos múltiplas linhas com características semelhantes, e isto diz ao modelo para as tratar de forma diferente de forma explícita.

A arquitetura proposta é relativamente simples: um conjunto de camadas densa e dropout, seguido de uma operação de agregação (por exemplo concatenação). Depois, outro conjunto de camadas Dense/Dropout transforma este espaço latente concatenado. Na base, duas camadas softmax diferentes, uma para cada tarefa, são adicionadas.

Comparado com a Opção 1, esta arquitetura tem a vantagem de permitir um processo de decisão baseado em confiança de previsão e apenas prever itens que o cliente consegue produzir. No entanto, a complexidade do processo é maior: precisa de criar amostras de treino positivas e negativas, e é mais difícil de implementar.

Podemos também adicionar penalizações personalizadas na nossa função de perda de acordo com o problema de negócio. Se prevermos 30 vigas num edifício que precisa de 20, está bem. Se precisar de mais, não será suficiente. Quando o modelo não prevê o mesmo material, mas um compatível, podemos penalizá-lo menos. Quando não é, penalizá-lo mais.

Processo de Decisão

Construir um modelo de classificação multitarefa permite-nos criar um processo de decisão baseado no valor esperado. Nomeadamente, qual é a probabilidade P de precisar de K unidades de um produto tem um valor esperado de P x K unidades.

Para saber que materiais manter em stock para as próximas N semanas, o valor esperado para todas as construções que foram encomendadas e ainda não foram executadas pode ser somado.

Medição de Impacto

Que métricas seriam importantes medir?

Internamente, para construir e avaliar o seu modelo, pode utilizar métricas de Machine Learning:

  • Classificação: PR AUC, ROC AUC, …
  • Regressão: Mean Absolute Error, Mean Squared Error…

Mas isto não diz nada sobre como o modelo funciona bem ao prever a quantidade que precisa de manter em stock. Precisa de medir métricas de negócio também:

  • Quantos produtos previmos/produzimos em excesso porque ninguém os comprou
  • Quantos produtos não previmos/produzimos a tempo, levando a um atraso adicional na construção

Conclusão

Este artigo mostrou algumas formas diferentes de pensar sobre problemas de previsão de produtos, onde existem muitos produtos com características similares.

Apenas abordamos o caso específico de previsão de um único tipo de produto (vigas) com diferentes características. No entanto, isto pode ser generalizado para diferentes produtos, como a quantidade de cimento necessária, adaptando o modelo. Uma vez que não existem "SKUs de cimento", e qualquer quantidade prevista é válida, pode substituir a sigmoid de classificação por uma camada linear, e criar um modelo de regressão juntamente com classificação binária para o atraso temporal.