Olá Monalisa, tudo certo e com você?
Esse meu "problema" é um problema real, hoje eu já resolvo ele dessa maneira que você comentou, com algumas particularidades, porém é feito da maneira tradicional, com loops dentro de loops. Porém dessa forma provavelmente não consigo chegar na maneira mais otimizada possível, por isso tentei resolver esse problema utilizando os ensinamentos do curso da IA aumentada.
No curso foi utilizado CP-Sat solver da ferramenta ORTools, que resolve problemas com números inteiros. Eu não tenho certeza que esse solver pode resolver o meu problema especificamente, conversando com o Chat-GPT pra tentar resolver esse problema, ele montou algoritmos com esse mesmo modelo do curso e com outros modelos também, porém de nenhuma forma consegui resolver o problema completamente.
Eu consegui resolver parcialmente montando o seguinte modelo:
- Criando variáveis com o nome "{id_pedido}{sku}" sendo o valor da variável a quantidade no pedido.
- Criei uma variável condicional que para quantidade em estoque >= quantidade no pedido (do sku especifico) true, e a condição contrária false utilizando OnlyEnforceIf para essas condições.
- Utilizo o modelo para maximizar o número de pedidos completos.
Problema do modelo atual, todos os pedidos cujo algum sku no pedido tem quantidade maior que o que tem em estoque o vão ser incompletos, em contra partida todos os pedidos com sku que tem quantidade menor ou igual estoque vão estar completos, mas não seria o caso, visto que o modelo deveria levar em consideração as quantidades do mesmo sku em outros pedidos. (Ainda não consigo pensar nesse problema da forma matemática de se pensar, como o Guilherme fala no curso. Só consigo pensar na forma programática e "loopeana" (loop inside loop) de se pensar).
Quando estava tentando resolver esse problema inicialmente, achei algo sobre um algoritmo para resolver esse tipo de problema chamado de Order Simplex. Já vi alguma coisa, conversei com o Chat GPT também, mas também não consegui aplicar meu exemplo nesse algoritmo.
Só trazendo mais informações que talvez podem ser uteis.
Obrigado desde já, abraços.