DDMRP para importador: programação linear de container via PuLP/CBC
Importador precisa fechar container fechado. DDMRP indica o que comprar; PuLP/CBC otimiza a carga. Veja como a stack ForgeFlow integra solver matemático no Odoo.
Luis Felipe Miléo
Importador tem uma restrição que o distribuidor doméstico não tem: a unidade de compra é o container. Não dá para comprar cinco caixas de um SKU e seis de outro toda semana. A compra acontece a cada 30, 60 ou 90 dias e precisa fechar 28 m³ ou 68 m³, respeitar peso máximo, e ainda assim atender a demanda projetada até a próxima chegada.
O DDMRP responde o que falta e quanto falta de cada SKU em estado vermelho ou amarelo. Mas o DDMRP puro não resolve a pergunta seguinte: dado um conjunto de SKUs em recomendação, qual a combinação ótima de quantidades para fechar um container?
Essa pergunta é um problema clássico de programação linear / inteira mista (MILP). E a stack DDMRP da ForgeFlow integra solver matemático no Odoo via PuLP com backend CBC (COIN-OR Branch and Cut).
O problema formalizado
Variáveis de decisão:
x_i= quantidade a comprar do SKUi(inteiro, em unidades ou caixas master)
Função objetivo (uma das mais usadas em importação):
maximize sum( priority_i * x_i )
Onde priority_i é uma função do buffer penetration do SKU — quanto mais vermelho o item, maior o peso na função objetivo.
Restrições típicas:
sum( volume_i * x_i ) <= V_container # capacidade volumétrica
sum( weight_i * x_i ) <= W_container # capacidade de peso
x_i >= MOQ_i ou x_i = 0 # lote mínimo do fornecedor (binária auxiliar)
x_i <= TOG_i - on_hand_i # não ultrapassar Top of Green
x_i é inteiro # não fracionar caixa
Em containers fracionados (LCL) entram restrições adicionais de cubagem mínima e fator de estiva.
Por que PuLP e CBC
PuLP é a biblioteca Python mais usada para modelar MILP de forma legível. Ela é interface, não solver — ela traduz o modelo Python para o formato que o solver entende.
CBC é o solver open-source do projeto COIN-OR, mantido pela própria comunidade científica. Ele resolve problemas de MILP de centenas a milhares de variáveis em segundos a minutos. Para o caso típico de container (50 a 300 SKUs candidatos), o CBC resolve em poucos segundos.
A escolha de PuLP+CBC pela ForgeFlow tem três motivos práticos:
- Open source — sem custo de licença Gurobi ou CPLEX
- Empacotável em pip — instala junto com o módulo Odoo
- Determinístico — mesma entrada produz mesma saída, auditável
Onde o solver entra no fluxo Odoo
O fluxo prático em um cliente importador implantado pela KMEE:
- DDMRP gera lista de recomendação — todos os SKUs com Net Flow Position abaixo de Top of Yellow, ordenados por penetration
- Comprador filtra por fornecedor / origem — SKUs comprados na China, no Vietnã, etc.
- Comprador chama o solver — botão na tela passa a lista, capacidade do container, volumes e pesos cadastrados em
product.template - Solver retorna o mix ótimo — quantidades por SKU que maximizam a recuperação de buffer respeitando container
- Comprador valida e gera RFQ no Odoo —
purchase.orderem rascunho com as linhas calculadas
Tudo dentro do Odoo, sem planilha externa.
Onde o solver erra
Modelo matemático só resolve o que está modelado. Erros típicos:
- Volume cadastrado no produto desatualizado — o solver acredita que cabe; na hora de carregar, não cabe
- MOQ não modelado — o solver sugere comprar 3 unidades de um SKU cujo lote mínimo é 100
- Lead time variável não considerado — o solver não sabe que o porto de origem fechou para celebração
- Função objetivo mal calibrada — pesar puramente por penetration ignora margem; pesar puramente por margem ignora ruptura
A camada DDMRP da ForgeFlow já modela MOQ, volume, peso e Top of Green corretamente. A calibragem da função objetivo é o ponto onde a KMEE atua na implantação — definir com o cliente se o critério é puramente DDMRP, ou ponderado por margem, ou ponderado por giro.
Caso real
Um cliente brasileiro em Odoo 18 (distribuidor importador) opera com containers fechados a partir da Ásia. A integração DDMRP + PuLP/CBC reduziu o tempo de planejamento de container de dias (planilha + reunião) para minutos (botão no Odoo + revisão), e melhorou a recuperação média de buffer por carga em mais de 30%.
Stack e papéis
A integração DDMRP + solver matemático é parte da camada Professional da ForgeFlow (Espanha) — especificamente os módulos ddmrp_prioritized_share e correlatos. A KMEE é parceira oficial brasileira para implantação Enterprise: instalação, calibragem e treinamento da equipe de compras.
Leituras relacionadas:
Sobre o autor
Luis Felipe Miléo
Desenvolvedor Odoo · KMEE
Desenvolvedor especializado em localização fiscal e projetos open source no ecossistema Odoo/OCA, com foco em integrações para o mercado latino-americano.
Ver perfil no LinkedInArtigos relacionados
Open Finance regulado vs APIs proprietárias: qual usar para cada caso
7 de jul. de 2026
Gestão EmpresarialDDA no Odoo: contas a pagar 100% automatizadas
30 de jun. de 2026
Gestão EmpresarialTOTVS está descontinuando sua API bancária — Odoo é a alternativa neutra
9 de jun. de 2026