Ciclo di vita del piano di itinerario

Questa pagina descrive la vita di un piano di percorso utilizzando l'API Route Optimization, a partire dall'identificazione delle tue esigenze di routing fino a un piano di percorso integrato nel tuo sistema.

Seguendo le fasi del piano di percorso, puoi raggiungere i seguenti obiettivi:

  • Mappa le operazioni della tua flotta: traduci la tua flotta fisica, i vincoli complessi e gli obiettivi commerciali in codice per l'API.
  • Ottimizza i piani di percorso per la tua attività: scopri come perfezionare il tuo piano di percorso in modo che possa soddisfare i tuoi obiettivi e migliorare le tue operazioni quotidiane.
  • Esegui il deployment in produzione: implementa il piano di percorso includendolo nelle operazioni quotidiane.

Il seguente diagramma mostra la vita di un piano di percorso.

Diagramma di flusso della vita di un piano di percorso spiegato nel testo di seguito

La fase di implementazione di un piano di percorso si verifica quando integri per la prima volta l'API o quando i requisiti aziendali cambiano in modo significativo. Copre le fasi da 1 a 5.

La fase delle operazioni quotidiane è più leggera e il perfezionamento è minimo. Riguarda le fasi da 2 a 4.

Le fasi del ciclo di vita di un percorso sono le seguenti:

  1. Definisci l'ambito del problema: identifica e organizza obiettivi, risorse, attività e vincoli per avere un quadro completo delle tue operazioni prima di iniziare a utilizzare l'API.
  2. Mappa i tuoi dati: traduci la tua realtà aziendale in parametri API in modo che il piano di percorso rifletta il modo in cui vuoi che operi la tua flotta.
  3. Crea una richiesta e ottieni un piano di percorso: inserisci i tuoi dati nell'API e ottieni il piano di percorso ottimizzato.
  4. Perfeziona il piano di percorso:testa il piano di percorso e ripetilo modificando i vincoli e gli obiettivi per assicurarti che copra tutte le tue esigenze.
  5. Integra il piano di percorso: collega il piano di percorso ai tuoi sistemi esistenti per fornire una navigazione pratica.

Definisci l'ambito del problema

Prima di utilizzare l'API, devi organizzare i dettagli delle tue operazioni quotidiane in categorie di dati chiare. In questo modo, puoi iniziare il processo di implementazione con una chiara comprensione delle tue risorse e attività attuali, dei loro vincoli e degli obiettivi che vuoi raggiungere con la tua flotta.

Identifica le risorse e le attività

Un passaggio importante nella pianificazione del percorso è l'identificazione delle risorse e delle attività, ovvero i veicoli e le spedizioni.

I veicoli Le spedizioni
  • Numero:quanti veicoli hai?
  • Località: dove iniziano e finiscono i percorsi dei veicoli?
  • Tempo:quali sono gli orari di lavoro dei conducenti dei veicoli?
  • Capacità:quali sono i limiti dei tuoi veicoli?
  • Costi: quali sono i costi di gestione del tuo parco risorse?
  • Località:dove si trovano i punti di ritiro e consegna?
  • Richieste: quali sono il peso o le dimensioni dei pacchi?
  • Vincoli: esistono finestre temporali specifiche per la consegna?
  • Tempo di servizio: quanto tempo serve al conducente per parcheggiare e scaricare?
  • Requisiti: la spedizione richiede un tipo di veicolo o un conducente specifico?

Identifica i vincoli

I vincoli sono i limiti e le restrizioni su come puoi utilizzare i tuoi veicoli e su come devi gestire le spedizioni. Determinano la maggior parte delle tue operazioni e sono fondamentali per creare un piano di percorso ottimizzato.

I vincoli rientrano generalmente in due categorie:

Vincoli rigidi Vincoli flessibili
Questi sono limiti che non possono essere superati. Ad esempio, un camion non può trasportare un peso superiore alla sua capacità massima e un conducente non può effettuare un ritiro dopo la chiusura di un negozio. Si tratta di preferenze che possono essere violate se necessario, di solito con un costo di penalità. Ad esempio, potresti preferire caricare un camion solo all'80% della capacità o consegnare prima di un orario target, ma non hai problemi a superare questi limiti per ottenere un percorso migliore.

I vincoli più comuni includono:

  • Limiti di capacità:il peso, il volume o il numero massimo di articoli che un veicolo può trasportare.
  • Finestre temporali:le fasce orarie specifiche in cui una località è aperta per una visita o gli orari di turno specifici di un conducente.
  • Costi: il costo di utilizzo di un veicolo o di mancata spedizione. Uno degli obiettivi principali dell'API è generare un piano di percorso conveniente.
  • Pause del conducente: i periodi di riposo del conducente, in genere richiesti dalle leggi sul lavoro dopo un determinato numero di ore di lavoro.

Definisci i tuoi scopi commerciali

Una volta stabilite le risorse e le attività e i relativi limiti, è il momento di stabilire quali metriche sono più importanti per la tua attività. Questi obiettivi vanno di pari passo con i vincoli e ti aiutano a decidere cosa è più importante quando pianifichi un percorso.

Di seguito sono riportati alcuni esempi di scopi commerciali:

Dimensioni della flotta Distanza Ora Costo
Vuoi ridurre al minimo il numero di veicoli utilizzati o utilizzare l'intera flotta per terminare prima la giornata lavorativa? Vuoi il percorso più breve per risparmiare carburante o preferisci un percorso più veloce che potrebbe essere più lungo a causa dell'utilizzo delle autostrade? Vuoi ridurre al minimo le ore totali di lavoro o dare la priorità all'arrivo in orari specifici, il che può allungare il tempo trascorso sul percorso? Vuoi ridurre al minimo le spese operative come stipendi e carburante o accettare costi più elevati per rispettare scadenze rigorose?

Mappa i dati

Una volta raccolti i dati, mappali in modo che corrispondano alle proprietà dell'API. In questo modo, l'ottimizzatore dispone di tutte le informazioni necessarie per restituire un piano di percorso che tenga conto della realtà della tua attività.

Utilizza i parametri nelle tabelle successive per mappare le risorse, le attività, i vincoli e gli obiettivi che hai mappato nella sezione Definisci l'ambito del problema.

Mappatura delle variabili

Concetto del mondo reale Parametro API Descrizione
Conducente o veicolo model.vehicles[] Rappresenta un singolo veicolo del tuo parco veicoli.
Sedi dei centri di raccolta vehicles[].startWaypoint
vehicles[].endWaypoint
La località in cui il veicolo inizia e termina il suo percorso.
Il tuo orario di apertura model.globalStartTime
model.globalEndTime
L'ora di inizio più presto e l'ora di fine più tardi per l'operazione dell'intera flotta.
Attività o pacchetto model.shipments[] Rappresenta un job. Può essere un pickup, un delivery o entrambi.
Posizione dell'attività pickups[].arrivalWaypoint
deliveries[].arrivalWaypoint
La posizione geografica in cui si svolge il lavoro.
Tempi di servizio pickups[].duration
deliveries[].duration
Il tempo trascorso nella località per completare l'attività (ad esempio, lo scarico), escluso il tempo di percorrenza.

Mappatura dei vincoli

Vincolo del mondo reale Parametro API Descrizione
Capacità del veicolo vehicles[].loadLimits Imposta il limite rigido o flessibile per la capacità del veicolo. Se il valore loadDemand di una spedizione supera il limite rimanente, non viene assegnato.
Dimensioni del pacco shipments[].loadDemands La quantità di capacità del veicolo consumata da una spedizione.
Limitazione per i veicoli shipments[].allowedVehicleIndices Limita una spedizione in modo che possa essere ritirata o consegnata solo da veicoli o conducenti specifici.
Orari disponibili shipments[].pickups[].timeWindows o shipments[].deliveries[].timeWindows Imposta gli orari disponibili per visitare una località. Se un veicolo non può arrivare entro questa finestra, la spedizione viene saltata.
Shift length limit vehicles[].routeDurationLimit Imposta un limite rigido o flessibile per la durata del lavoro di un conducente specifico (ad esempio, un massimo di 8 ore), indipendentemente dall'ora di fine globale.
Pause del conducente vehicles[].breakRule Applica regole di riposo specifiche, come pause obbligatorie dopo un certo numero di ore di lavoro.
Limitazioni stradali vehicles[].travelMode Specifica la modalità di viaggio (ad esempio DRIVE o BICYCLE). In questo modo, il percorso viene limitato alle strade legali e vengono determinate le velocità utilizzate per calcolare i tempi di percorrenza.

Mappatura degli obiettivi

Obiettivo reale Parametro API Descrizione
Riduci al minimo le dimensioni del parco veicoli vehicles[].fixedCost Applica un costo una tantum per l'utilizzo di un veicolo. Un costo fisso elevato impone a un percorso di dare la priorità all'utilizzo di un numero inferiore di veicoli rispetto all'aumento della distanza totale o dell'orario di lavoro.
Riduci al minimo la distanza vehicles[].costPerKilometer Applica un costo per ogni chilometro percorso. Dà la priorità ai percorsi più brevi per risparmiare carburante e usura.
Riduci al minimo il tempo totale vehicles[].costPerHour Applica un costo per ogni ora di attività del veicolo (inclusi i tempi di viaggio e di attesa). Dà la priorità al completamento più rapido.
Riduci al minimo il tempo di guida vehicles[].costPerTraveledHour Applica un costo specifico per il tempo impiegato per lo spostamento. In questo modo, è possibile distinguere tra l'attesa nel traffico (costosa) e l'attesa a una fermata(potenzialmente più economica).
Assegna la priorità a determinate attività shipments[].penaltyCost Applica un costo se una spedizione specifica viene saltata. Impostando un valore elevato, le attività critiche avranno la priorità su quelle facoltative.

Crea la richiesta e ricevi una risposta

L'utilizzo dell'API Route Optimization per generare un piano di percorso prevede i seguenti passaggi:

  1. Configura l'ambiente: configura il progetto Google Cloud, abilita l'API e configura l'autenticazione. Per istruzioni, vedi Inizia. Devi seguire questo passaggio una sola volta.
  2. Invia la richiesta: crea il corpo della richiesta utilizzando la mappatura dei dati definita nella sezione precedente. Per informazioni su endpoint, intestazioni e formattazione delle richieste, consulta Effettua una richiesta API.
  3. Comprendi la risposta: una volta ricevuta una risposta dall'API, comprendi il piano di percorso e il significato di ogni parametro. Consulta Interpreta una risposta.

Perfeziona il piano del percorso

Tradurre la logistica reale in costi e vincoli dell'API è un'attività complessa. Il piano di percorso iniziale potrebbe non corrispondere ai tuoi scopi commerciali o alle aspettative dei conducenti. Il perfezionamento del piano di percorso è il processo iterativo di test dei percorsi restituiti e di aggiustamento dei parametri fino a trovare una configurazione che raggiunga i tuoi obiettivi.

Modifica obiettivi e vincoli

Se il piano di percorso generato non soddisfa le tue esigenze, puoi modificare alcuni parametri per ottenere risultati diversi. La restrizione o l'allentamento dei parametri modifica il modo in cui gli obiettivi in conflitto vengono risolti nel piano di percorso. L'allentamento dei parametri è un modo efficiente per scoprire i parametri che causano errori nei piani di percorso.

La tabella seguente elenca i problemi di routing più comuni e i parametri che puoi regolare per risolverli.

Scenario Parametro Aggiustamento Descrizione
Una spedizione importante viene saltata shipments[].penaltyCost Aumenta il valore o aggiungi costi di penalità ad altre spedizioni Se la spedizione è facoltativa, aumenta il costo della penalità per assegnarle la priorità. Se la spedizione è obbligatoria (non ha un costo di penalità), aggiungi i costi di penalità ad altre spedizioni meno critiche. In questo modo, diventano facoltativi, liberando tempo e capacità del veicolo per la spedizione importante.
Spedizione saltata a causa della tempistica softStartTime/softEndTime Aggiungi finestre temporali flessibili Le finestre temporali rigide eliminano le attività anche se sono in ritardo di un solo minuto. Le finestre flessibili consentono al conducente di arrivare leggermente in ritardo pagando un "costo" anziché non riuscire a completare l'assegnazione.
Spedizione saltata a causa del peso loadLimits[].softMaxLoad e costPerUnitAbove Aggiungi richieste di carico flessibile Consente a un veicolo di superare leggermente la sua capacità ideale (con una penalità) anziché lasciare un pacco.
Spedizione saltata a causa di un sovraccarico del parco risorse model.vehicles[] o shipments[].timeWindows Aggiungi veicoli o allenta le finestre temporali Se ci sono troppe spedizioni per la flotta attuale, soprattutto nelle ore di punta, aggiungi altri veicoli o amplia le finestre di consegna per distribuire il carico di lavoro.
Percorsi troppo lunghi o inefficienti vehicles[].costPerKilometer/costPerHour Aggiungi costi o aumenta il loro valore Indica all'API che il viaggio è costoso, incoraggiandola a eliminare le fermate distanti e isolate per creare percorsi più compatti per la flotta.
I turni dei conducenti sono troppo lunghi vehicles[].routeDurationLimit o model.vehicles[] Aggiungi limiti di durata o aggiungi veicoli e limiti Impone un limite massimo (ad esempio 8 ore) al tempo totale trascorso da un conducente sulla strada. L'aggiunta di veicoli da sola non ridurrà i percorsi, a meno che non applichi anche limiti di durata per forzare il solver a distribuire il workload su una flotta più grande.

Aggiorna un piano di percorso

Spesso è necessario aggiornare un piano di percorso mantenendo invariata la base, ad esempio aggiungendo un ritiro alla pianificazione di un conducente attivo. Per farlo, utilizza i parametri di inserimento, che forniscono all'API un punto di partenza basato sulla soluzione precedente, consentendole di modificare il piano esistente anziché calcolarne uno nuovo da zero.

Di seguito sono riportati i diversi modi in cui puoi aggiornare un piano di route con i parametri di inserimento:

  • Passa i percorsi di una risposta precedente nel campo injectedFirstSolutionRoutes della nuova richiesta. In questo modo, la ricerca di ottimizzazione viene velocizzata ed è utile per la ripianificazione prima dell'inizio delle operazioni giornaliere, ad esempio per l'integrazione delle spedizioni dell'ultimo minuto.
  • Controlla il grado di modifica utilizzando il campo injectedSolutionConstraint. Questa opzione è utile quando le operazioni sono già in corso, in quanto ti consente di preservare la sequenza attuale del conducente o di correggere parti del piano che sono già state eseguite.
  • Assicurati che il percorso aggiornato rimanga assegnato al veicolo corretto impostando interpretInjectedSolutionsUsingLabels su true. Questo è utile durante la sperimentazione quando si aggiungono o rimuovono spedizioni e veicoli, in quanto corrisponde ai percorsi utilizzando le etichette anziché gli indici. Ciò richiede che tutte le etichette dei veicoli e le etichette spedizione siano univoche.

Integra il tuo piano di percorso

Il piano di percorso finalizzato è un oggetto di dati che rappresenta una gestione ottimizzata delle risorse e delle attività, nel rispetto dei vincoli e degli obiettivi. Utilizza questo piano di percorso nelle tue operazioni quotidiane integrandolo nel tuo sistema. In genere, questo comporta la visualizzazione del piano di percorso per i gestori del parco risorse e l'invio di istruzioni passo passo ai conducenti.

Visualizzazione

Per consentire ai gestori del parco veicoli di verificare e monitorare il piano di percorso, puoi visualizzarlo nei seguenti modi:

Per consentire ai gestori del parco risorse di verificare e monitorare il piano di percorso, puoi visualizzarlo su una mappa della dashboard. A seconda della fase di sviluppo attuale, puoi visualizzare il piano di percorso nei seguenti modi:

  • Esplora senza codice: puoi utilizzare l'app Route Optimization open source per vedere come l'API traduce i tuoi dati in percorsi fisici su una mappa. Questa applicazione web funge da strumento esplorativo che ti consente di creare scenari, ottimizzare i parametri dei vincoli e visualizzare i piani di percorso risultanti prima di scrivere il codice.
  • Visualizza l'ordine delle visite:puoi mostrare la sequenza delle visite come punti numerati su una mappa per valutare i tuoi piani di ottimizzazione e invio nel tuo sistema. Per farlo, individua l'array visits all'interno di ogni percorso della risposta dell'API. Gli elementi di questo array sono ordinati esattamente come il conducente deve eseguirli. Puoi scorrere questo elenco, utilizzare shipmentIndex per recuperare le coordinate della posizione di ogni fermata e utilizzare la libreria di mappatura per visualizzare gli indicatori numerati sulla mappa in base al loro ordine nell'elenco.
  • Traccia il percorso fisico: puoi visualizzare il percorso esatto pianificato su una mappa per capire perché l'ottimizzatore ha scelto una sequenza specifica. Questa polilinea rappresenta il percorso previsto per la pianificazione e la valutazione, non il percorso in tempo reale seguito da un conducente. Imposta populatePolylines: true nella richiesta per ottenere un campo encodedPolyline per ogni percorso e decodificalo utilizzando il metodo google.maps.geometry.encoding.decodePath() dell'API Maps JavaScript.

Assegnazione ai conducenti

Puoi integrare le indicazioni stradali passo passo nell'applicazione per i conducenti utilizzando l'SDK Navigation o fornire deep link all'app Google Maps per utenti finali.

  • SDK Navigation: se hai un'applicazione per conducenti personalizzata, puoi integrare l'SDK Navigation per Android o iOS per le indicazioni stradali passo passo in-app. Puoi integrare le informazioni sull'attività dalla risposta dell'API nel tuo sistema e utilizzare l'SDK per la navigazione. Per passare i percorsi dalla risposta dell'API all'SDK, imposta populateTransitionPolylines: true nella richiesta. In questo modo viene generato un routeToken per ogni transizione nella risposta.
  • Fleet Engine: per una gestione avanzata del parco veicoli, puoi importare il piano di percorso generato dall'API in Fleet Engine per monitorare l'esecuzione del percorso in tempo reale. Mentre l'API fornisce una polilinea del percorso previsto per la valutazione, Fleet Engine associa la sequenza di visite pianificata al monitoraggio dei veicoli in tempo reale.