Gli obiettivi sono parametri che puoi utilizzare per specificare obiettivi di ottimizzazione di alto livello anziché fornire parametri di costo specifici dal modello di costo.
Puoi utilizzare più obiettivi in una singola richiesta e assegnare a ciascun obiettivo un peso relativo per controllare la sua influenza sull'ottimizzazione complessiva. Gli obiettivi influiscono sull'intera richiesta, influenzando tutti i tuoi veicoli e le tue spedizioni. Infine, puoi utilizzare gli obiettivi anche per iniziare lo sviluppo del tuo modello di costi, come descritto in Generare un modello di costi.
Puoi utilizzare gli obiettivi per controllare i seguenti impatti sul tuo piano di itinerario:
- Tempo di percorrenza o distanza totale dei tuoi itinerari.
- Tempo di lavoro totale per tutti i veicoli.
- Numero totale di veicoli utilizzati.
Proprietà
La proprietà objectives è un array di tipi di messaggio Objective all'interno di ShipmentModel. Ogni Objective definisce un obiettivo di ottimizzazione specifico e contiene i campi elencati nella tabella seguente:
| Campo | Tipo | Descrizione |
|---|---|---|
type |
Enum |
Specifica il target di ottimizzazione predefinito. I valori accettati sono i seguenti:
|
weight |
Doppio |
Definisce l'importanza relativa di questo obiettivo. Quando utilizzi più obiettivi, il valore weight controlla l'influenza di questo obiettivo specifico sull'ottimizzazione complessiva del percorso rispetto agli altri. Può essere qualsiasi numero non negativo e non deve dare come somma 1. Il valore predefinito è 1.0.
|
Esempi
Questa sezione tratta due tipi di esempi:
- Un esempio di codice che illustra la struttura dell'array
objectives. - Un esempio di richiesta che include l'array
objectives.
Esempi di codice
L'esempio seguente mostra la struttura di objectives:
"objectives": [
{
"type": "OBJECTIVE_TYPE",
"weight": WEIGHT
}
]
Esempio di richiesta
L'esempio seguente mostra la struttura di una richiesta optimizeTours
di base che incorpora più obiettivi, in cui MIN_TRAVEL_TIME è tre volte
più importante di MIN_WORKING_TIME.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME", "weight": 3.0 }, { "type": "MIN_WORKING_TIME" } ] } }
Generare un modello di costi
Gli obiettivi sono un modo rapido per impostare i target di ottimizzazione, ma in alcuni casi potrebbero non essere sufficientemente specifici. Per raggiungere i tuoi obiettivi di routing esatti, potresti aver bisogno del controllo granulare disponibile solo tramite i parametri del modello di costo.
Puoi iniziare a sviluppare il tuo modello di costi aggiungendo obiettivi alla richiesta, quindi convertendo gli obiettivi della richiesta in parametri del modello di costi utilizzando la modalità di risoluzione TRANSFORM_AND_RETURN_REQUEST.
Quando invii una richiesta utilizzando questa modalità di risoluzione, si verifica quanto segue:
- L'API converte i tuoi obiettivi in parametri del modello di costo e
li restituisce in un
processedRequest. Puoi quindi modificare i parametri del modello di costo in base alle tue esigenze per perfezionare il piano del percorso. - Quando utilizzi più obiettivi, l'API combina i costi di tutti gli obiettivi e li ridimensiona in base ai rispettivi pesi.
- Non ti viene addebitato alcun costo per questa richiesta, poiché l'API non ti fornisce un percorso ottimizzato, ma converte solo gli obiettivi in parametri del modello di costo.
Esempio di richiesta
L'esempio seguente mostra una richiesta che utilizza l'obiettivo MIN_TRAVEL_TIME e la modalità di risoluzione TRANSFORM_AND_RETURN_REQUEST:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING" } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" }
Esempio di risposta
Di seguito è riportata la risposta corrispondente alla richiesta precedente. Questa risposta include sia i parametri del modello di costo generato sia l'obiettivo originale come riferimento.
{ "processedRequest": { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.425062610009959, "longitude": -122.09535511930135 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.424215032060211, "longitude": -122.09526063135228 } } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerHour": 30, "costPerTraveledHour": 330, "costPerKilometer": 0.2 } ], "objectives": [ { "type": "MIN_TRAVEL_TIME" } ] }, "solvingMode": "TRANSFORM_AND_RETURN_REQUEST" } }