26.000 pasti consegnati al giorno?
La logistica delle consegne per questo volume è complessa. Dato per scontato che i nostri autisti volontari possano gestire 15 razioni, ovvero 30 pasti per viaggio, e che venga loro fornita un’itinerario ottimizzato, ci vogliono comunque circa 1,5-2 ore per completare il turno. Consideriamo questa durata sostenibile per i nostri volontari, che possono dedicarsi all’attività 2-3 giorni a settimana.
Per noi, 26.000 pasti corrisponderebbero a 13.000 razioni. Ci aspetteremmo che ciò implichi circa 7.000 fermate (circa 2 razioni per fermata). Supponendo l’uso di autisti volontari e auto private per le consegne, ciò significherebbe, per noi, 700 autisti ogni giorno; nella realtà, però, servirebbero circa 2.000 autisti, poiché i nostri volontari non sono disposti a guidare tutti i giorni.
Se avete il controllo sulla fonte dei pasti (noi non produciamo il cibo, quindi per noi è molto più difficile), allora dovete semplicemente suddividere l’elenco degli indirizzi tra gli autisti e ottimizzare ogni percorso. Il nostro volume è molto inferiore al vostro (pensiamo a 2.000-3.000 pasti al giorno, un decimo del vostro), quindi non suddividiamo automaticamente l’elenco degli indirizzi. Ogni indirizzo di consegna viene assegnato a un quartiere, e i nostri dispatcher suddividono manualmente l’elenco delle consegne per quartiere (è un semplice ordinamento su foglio di calcolo). Successivamente, ottimizziamo il percorso di ogni autista tramite un server web in esecuzione su AWS, fornendo a ciascuno un itinerario ottimizzato (un semplice algoritmo del commesso viaggiatore).
Abbiamo considerato la possibilità di suddividere automaticamente l’intero elenco degli indirizzi, ma non ne abbiamo ancora bisogno e, dato che abbiamo pochi fondi, vogliamo mantenere bassi i costi per AWS e le chiamate all’API di Google Maps
Per il problema generalizzato di instradamento di più veicoli, esistono soluzioni algoritmiche semplici che potremmo utilizzare, ad esempio qui:
Tuttavia, con un numero così elevato di consegne, immagino dobbiate coprire un’area geografica molto vasta; quindi, probabilmente, dovrete anche considerare gli indirizzi di residenza degli autisti, il che vi porta fuori dal classico problema VRP. Forse delle euristiche semplici possono suddividere i gruppi di autisti e gli indirizzi di consegna in sottoproblemi in cui sia le consegne che gli autisti si trovano nella stessa area geografica; in tal caso, potrete nuovamente utilizzare una soluzione VRP preconfezionata.
A proposito, utilizziamo la durata di viaggio indicata da GMap come distanza punto a punto.