26 mil refeições entregues por dia?
A logística de entrega para esse volume é difícil. Estamos assumindo que nossos motoristas voluntários podem lidar com 15 rações, ou seja, 30 refeições por viagem de entrega, e estamos fornecendo a cada um uma rota de direção otimizada. Ainda assim, leva cerca de 1,5 a 2 horas para concluir a rota, uma duração que consideramos sustentável 2 a 3 dias por semana para nossos voluntários.
Para nós, 26 mil refeições equivaleriam a 13 mil rações. Esperaríamos que isso significasse cerca de 7 mil paradas (cerca de 2 rações por parada) para nós. Assumindo motoristas voluntários e carros comuns para entrega, isso significaria, para nós, 700 motoristas dirigindo todos os dias, ou seja, na realidade, cerca de 2.000 motoristas (porque os nossos não se voluntariam para dirigir todos os dias).
Se você tem controle sobre a origem das refeições (nós não produzimos a comida, então é muito mais difícil para nós), então você só precisa dividir a lista de endereços entre os motoristas e otimizar cada rota. Nosso volume é muito menor que o seu (estamos pensando em 2 a 3 mil refeições por dia, 1/10 do seu), então não dividimos automaticamente a lista de endereços. Cada endereço de entrega é atribuído a um bairro, e nossos despachantes dividem manualmente a lista de entregas por bairro (é uma simples ordenação em planilha). Em seguida, otimizamos a rota de cada motorista por meio de um servidor web rodando na AWS e fornecemos a cada motorista uma rota de direção otimizada (algoritmo simples do caixeiro-viajante).
Consideramos a divisão automática da lista completa de endereços. Mas ainda não precisamos disso, e não temos muito dinheiro, então queremos manter nossas contas da AWS e da API do Google Maps baixas
Para o problema generalizado de roteamento de múltiplos veículos, existem soluções algorítmicas simples que poderíamos usar, por exemplo, aqui:
No entanto, com tantas entregas, imagino que você deva cobrir uma área geográfica muito grande, então possivelmente também terá que considerar os endereços residenciais dos seus motoristas, o que o tira do problema padrão de roteamento de veículos (VRP). Possivelmente, heurísticas simples podem dividir os grupos de motoristas e os endereços de entrega em subproblemas onde tanto as entregas quanto os motoristas estão na mesma área geográfica, caso em que você pode simplesmente usar uma solução pronta de VRP novamente.
A propósito, usamos a duração de viagem do GMap como a distância ponto a ponto.