Pular para o conteúdo
Gustavo Penido
Todos os projetos
LogísticaPeríodo · 2024 até 2025Meu papel · Desenvolvimento e otimização

Motor de roteirização de frota

Peso, cubagem, limite de paradas e janela de entrega resolvidos por um solver, em vez de uma manhã inteira montando romaneio na mão.

01
5
validações antes de resolver
02
2
provedores de rota integrados

O problema

Montar o romaneio era trabalho manual e caro. Cada veículo tem limite de peso e de volume, cada motorista aguenta um número de paradas, e metade dos endereços de destinatário chega sem coordenada ou com cubagem faltando. Quando o roteiro saía errado, o erro só aparecia com o caminhão já carregado. E cada consulta a API externa de rota entrava na fatura.

O que eu construí

Assumi e evoluí o motor. Antes de tentar resolver qualquer coisa ele valida: data de partida no passado, roteiro sem destino, destinatários demais para a frota disponível, base de partida sem coordenada, peso total acima da capacidade somada dos veículos. Completa a cubagem que falta, geocodifica endereço sem coordenada, agrupa documentos por destinatário, monta a matriz de distâncias e manda para o solver em Python. Tudo em fila, porque resolver a frota inteira não cabe no tempo de uma requisição. Terminado o cálculo, ele cria o romaneio sozinho e devolve para a operação.

O que mudou

O roteiro deixou de ser uma manhã de trabalho e passou a rodar em segundo plano. O erro passou a aparecer na validação, e não com o caminhão carregado. E a conta das APIs externas de rota caiu, porque distância já calculada passou a ser reaproveitada em vez de comprada de novo.

Como funciona

OperaçãoAPI de roteirizaçãoValidação5 regrasGeocodificaçãoFilaSolver PythonRomaneiocriado sozinho
Como funciona — Motor de roteirização de frota

Stack

  • Laravel
  • PHP 8
  • Python
  • Filas
  • MySQL
  • Google Geocoding
  • Maplink
Próximo

Emissão fiscal sob regra de governo

Abrir