Indice
RouteOptimization(interfaccia)AggregatedMetrics(messaggio)BatchOptimizeToursMetadata(messaggio)BatchOptimizeToursRequest(messaggio)BatchOptimizeToursRequest.AsyncModelConfig(messaggio)BatchOptimizeToursResponse(messaggio)BreakRule(messaggio)BreakRule.BreakRequest(messaggio)BreakRule.FrequencyConstraint(messaggio)DataFormat(enum)DistanceLimit(messaggio)GcsDestination(messaggio)GcsSource(messaggio)InjectedSolutionConstraint(messaggio)InjectedSolutionConstraint.ConstraintRelaxation(messaggio)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(messaggio)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(enum)InputConfig(messaggio)Location(messaggio)OptimizeToursLongRunningMetadata(messaggio)OptimizeToursRequest(messaggio)OptimizeToursRequest.SearchMode(enum)OptimizeToursRequest.SolvingMode(enum)OptimizeToursResponse(messaggio)OptimizeToursResponse.Metrics(messaggio)OptimizeToursUriMetadata(messaggio)OptimizeToursUriRequest(messaggio)OptimizeToursUriResponse(messaggio)OptimizeToursValidationError(messaggio)OptimizeToursValidationError.FieldReference(messaggio)OutputConfig(messaggio)RouteModifiers(messaggio)Shipment(messaggio)Shipment.Load(messaggio)Shipment.VisitRequest(messaggio)ShipmentModel(messaggio)ShipmentModel.DurationDistanceMatrix(messaggio)ShipmentModel.DurationDistanceMatrix.Row(messaggio)ShipmentModel.Objective(messaggio)ShipmentModel.Objective.Type(enum)ShipmentModel.PrecedenceRule(messaggio)ShipmentRoute(messaggio)ShipmentRoute.Break(messaggio)ShipmentRoute.EncodedPolyline(messaggio)ShipmentRoute.Transition(messaggio)ShipmentRoute.VehicleLoad(messaggio)ShipmentRoute.Visit(messaggio)ShipmentRoute.Visit.VisitType(enum)ShipmentTypeIncompatibility(messaggio)ShipmentTypeIncompatibility.IncompatibilityMode(enum)ShipmentTypeRequirement(messaggio)ShipmentTypeRequirement.RequirementMode(enum)SkippedShipment(messaggio)SkippedShipment.Reason(messaggio)SkippedShipment.Reason.Code(enum)TimeWindow(messaggio)TransitionAttributes(messaggio)Uri(messaggio)Vehicle(messaggio)Vehicle.DurationLimit(messaggio)Vehicle.LoadLimit(messaggio)Vehicle.LoadLimit.Interval(messaggio)Vehicle.LoadLimit.LoadCost(messaggio)Vehicle.TravelMode(enum)Vehicle.UnloadingPolicy(enum)VehicleFullness(messaggio)Waypoint(messaggio)
RouteOptimization
Un servizio per l'ottimizzazione dei tour dei veicoli.
Validità di determinati tipi di campi:
google.protobuf.Timestamp- Gli orari sono in formato Unix: secondi dal 1970-01-01T00:00:00+00:00.
- i secondi devono essere compresi tra 0 e 253402300799, ovvero tra 1970-01-01T00:00:00+00:00 e 9999-12-31T23:59:59+00:00.
- nanos deve essere non impostato o impostato su 0.
google.protobuf.Duration- i secondi devono essere compresi tra 0 e 253402300799, ovvero tra 1970-01-01T00:00:00+00:00 e 9999-12-31T23:59:59+00:00.
- nanos deve essere non impostato o impostato su 0.
google.type.LatLng- La latitudine deve essere compresa tra -90,0 e 90,0.
- la longitudine deve essere compresa tra -180,0 e 180,0.
- almeno uno tra latitudine e longitudine deve essere diverso da zero.
| BatchOptimizeTours |
|---|
|
Ottimizza i tour dei veicoli per uno o più messaggi Questo metodo è un'operazione a lunga esecuzione (LRO). Gli input per l'ottimizzazione (messaggi L'utente può eseguire il polling di Se il campo Se il campo
|
| OptimizeTours |
|---|
|
Invia un Un modello L'obiettivo è fornire un'assegnazione di
|
| OptimizeToursLongRunning |
|---|
|
Si tratta di una variante del metodo L' Sperimentale: per ulteriori dettagli, visita la pagina https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request.
|
| OptimizeToursUri |
|---|
|
Si tratta di una variante del metodo Il client specifica l'URI di Questo metodo è preferibile al metodo L' Sperimentale: per ulteriori dettagli, visita la pagina https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request.
|
AggregatedMetrics
Metriche aggregate per ShipmentRoute (risp. per OptimizeToursResponse) su tutti gli elementi Transition e/o Visit (risp. su tutti gli elementi ShipmentRoute).
| Campi | |
|---|---|
performed_shipment_count |
Numero di spedizioni eseguite. Tieni presente che una coppia di ritiro e consegna viene conteggiata una sola volta. |
travel_duration |
Durata totale del viaggio per un percorso o una soluzione. |
wait_duration |
La durata totale dell'attesa per un percorso o una soluzione. |
delay_duration |
Durata totale del ritardo per un percorso o una soluzione. |
break_duration |
La durata totale della pausa per un percorso o una soluzione. |
visit_duration |
La durata totale della visita per un percorso o una soluzione. |
total_duration |
La durata totale deve essere uguale alla somma di tutte le durate indicate sopra. Per i percorsi, corrisponde anche a: |
travel_distance_meters |
Distanza totale percorsa per un percorso o una soluzione. |
max_loads |
Carico massimo raggiunto sull'intera rotta (o soluzione), per ciascuna delle quantità su questa rotta (o soluzione), calcolato come il massimo su tutti i |
performed_mandatory_shipment_count |
Numero di spedizioni obbligatorie eseguite. Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
performed_shipment_penalty_cost_sum |
La somma del Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
BatchOptimizeToursMetadata
Questo tipo non contiene campi.
Metadati dell'operazione per le chiamate BatchOptimizeToursRequest.
BatchOptimizeToursRequest
Richiesta di ottimizzazione batch dei tour come operazione asincrona. Ogni file di input deve contenere un OptimizeToursRequest e ogni file di output deve contenere un OptimizeToursResponse. La richiesta contiene informazioni per leggere/scrivere e analizzare i file. Tutti i file di input e output devono trovarsi nello stesso progetto.
| Campi | |
|---|---|
parent |
Obbligatorio. Progetto e località di destinazione per effettuare una chiamata. Formato:
Se non viene specificata una località, verrà scelta automaticamente una regione. |
model_configs[] |
Obbligatorio. Informazioni di input/output di ogni modello di acquisto, come percorsi dei file e formati dei dati. |
AsyncModelConfig
Informazioni per risolvere un modello di ottimizzazione in modo asincrono.
| Campi | |
|---|---|
display_name |
Facoltativo. Nome del modello definito dall'utente, che può essere utilizzato come alias dagli utenti per tenere traccia dei modelli. |
input_config |
Obbligatorio. Informazioni sul modello di input. |
output_config |
Obbligatorio. Le informazioni sulla posizione di output desiderata. |
BatchOptimizeToursResponse
Questo tipo non contiene campi.
Risposta a un BatchOptimizeToursRequest. Questo valore viene restituito nell'operazione a lunga esecuzione al termine dell'operazione.
BreakRule
Regole per generare pause per un veicolo (ad es. pause pranzo). Una pausa è un periodo di tempo continuo durante il quale il veicolo rimane inattivo nella sua posizione attuale e non può effettuare alcuna visita. Una pausa può verificarsi:
- durante il viaggio tra due visite (che include il tempo immediatamente prima o dopo una visita, ma non nel mezzo di una visita), nel qual caso estende il tempo di transito corrispondente tra le visite,
- o prima dell'avvio del veicolo (il veicolo potrebbe non avviarsi a metà di una pausa), nel qual caso non influisce sull'ora di avvio del veicolo.
- o dopo la fine del viaggio (stessa cosa, con l'ora di fine del viaggio).
| Campi | |
|---|---|
break_requests[] |
Sequenza di interruzioni. Vedi il messaggio |
frequency_constraints[] |
Potrebbero essere applicati diversi |
BreakRequest
La sequenza di pause (ovvero il numero e l'ordine) che si applicano a ogni veicolo deve essere nota in anticipo. Le BreakRequest ripetute definiscono la sequenza, nell'ordine in cui devono verificarsi. Le finestre temporali (earliest_start_time / latest_start_time) possono sovrapporsi, ma devono essere compatibili con l'ordine (questo viene verificato).
| Campi | |
|---|---|
earliest_start_time |
Obbligatorio. Limite inferiore (incluso) all'inizio della pausa. |
latest_start_time |
Obbligatorio. Limite superiore (incluso) dell'inizio della pausa. |
min_duration |
Obbligatorio. Durata minima della pausa. Deve essere positivo. |
FrequencyConstraint
È possibile limitare ulteriormente la frequenza e la durata delle pause specificate in precedenza, imponendo una frequenza minima per le pause, ad esempio "Deve esserci una pausa di almeno 1 ora ogni 12 ore". Supponendo che ciò possa essere interpretato come "Entro qualsiasi finestra temporale mobile di 12 ore, deve esserci almeno una pausa di almeno un'ora", questo esempio si tradurrebbe nel seguente FrequencyConstraint:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
La tempistica e la durata delle interruzioni nella soluzione rispetteranno tutti questi vincoli, oltre alle finestre temporali e alle durate minime già specificate in BreakRequest.
Un FrequencyConstraint può in pratica essere applicato a pause non consecutive. Ad esempio, la seguente pianificazione rispetta l'esempio "1 ora ogni 12 ore":
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| Campi | |
|---|---|
min_break_duration |
Obbligatorio. Durata minima della pausa per questo vincolo. Non negativo. Visualizza la descrizione di |
max_inter_break_duration |
Obbligatorio. Durata massima consentita di qualsiasi intervallo di tempo nel percorso che non include almeno parzialmente una pausa di |
DataFormat
Formati dei dati per i file di input e output.
| Enum | |
|---|---|
DATA_FORMAT_UNSPECIFIED |
Valore non valido, il formato non deve essere UNSPECIFIED. |
JSON |
JavaScript Object Notation. |
PROTO_TEXT |
Formato di testo dei buffer di protocollo. Consulta https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
Un limite che definisce una distanza massima percorribile. Può essere duro o morbido.
Se è definito un limite soft, devono essere definiti sia soft_max_meters che cost_per_kilometer_above_soft_max e devono essere non negativi.
| Campi | |
|---|---|
max_meters |
Un limite rigido che vincola la distanza a un massimo di max_meters. Il limite non può essere negativo. |
soft_max_meters |
Un limite soft che non impone un limite di distanza massimo, ma che, se violato, comporta un costo che si somma agli altri costi definiti nel modello, con la stessa unità. Se definito, soft_max_meters deve essere inferiore a max_meters e deve essere non negativo. |
cost_per_kilometer_below_soft_max |
Costo per chilometro sostenuto, in aumento fino a Questo costo non è supportato in |
cost_per_kilometer_above_soft_max |
Costo per chilometro sostenuto se la distanza supera il limite di Il costo deve essere non negativo. |
GcsDestination
La posizione Google Cloud Storage in cui verranno scritti i file di output.
| Campi | |
|---|---|
uri |
Obbligatorio. URI Cloud Storage. |
GcsSource
La posizione di Google Cloud Storage da cui verrà letto il file di input.
| Campi | |
|---|---|
uri |
Obbligatorio. URI di un oggetto Google Cloud Storage con il formato |
InjectedSolutionConstraint
Soluzione inserita nella richiesta, incluse informazioni su quali visite devono essere vincolate e in che modo.
| Campi | |
|---|---|
routes[] |
Route della soluzione da inserire. Alcune route potrebbero essere omesse dalla soluzione originale. Le route e le spedizioni ignorate devono soddisfare i presupposti di validità di base elencati per |
skipped_shipments[] |
Spedizioni saltate della soluzione da inserire. Alcuni potrebbero essere omessi dalla soluzione originale. Consulta il campo |
constraint_relaxations[] |
Per zero o più gruppi di veicoli, specifica quando e di quanto allentare i vincoli. Se questo campo è vuoto, tutti i percorsi dei veicoli non vuoti sono completamente vincolati. |
ConstraintRelaxation
Per un gruppo di veicoli, specifica a quale soglia o soglie verranno allentati i vincoli relativi alle visite e a quale livello. Le spedizioni elencate nel campo skipped_shipment sono vincolate a essere saltate, ovvero non possono essere eseguite.
| Campi | |
|---|---|
relaxations[] |
Tutti gli allentamenti del vincolo di visita che verranno applicati alle visite sui percorsi con veicoli in |
vehicle_indices[] |
Specifica gli indici dei veicoli a cui si applica il vincolo di visita Un indice del veicolo viene mappato come |
Relax
Se relaxations è vuoto, l'ora di inizio e la sequenza di tutte le visite in routes sono completamente vincolate e non è possibile inserire o aggiungere nuove visite a questi percorsi. Inoltre, l'ora di inizio e di fine di un veicolo in routes è completamente vincolata, a meno che il veicolo non sia vuoto (ovvero non abbia visite e used_if_route_is_empty sia impostato su false nel modello).
relaxations(i).level specifica il livello di allentamento del vincolo applicato a una visita #j che soddisfa:
route.visits(j).start_time >= relaxations(i).threshold_timeANDj + 1 >= relaxations(i).threshold_visit_count
Analogamente, l'avvio del veicolo viene posticipato a relaxations(i).level se soddisfa le seguenti condizioni:
vehicle_start_time >= relaxations(i).threshold_timeANDrelaxations(i).threshold_visit_count == 0e l'estremità del veicolo è rilassata arelaxations(i).levelse soddisfa:vehicle_end_time >= relaxations(i).threshold_timeANDroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Per applicare un livello di rilassamento se una visita soddisfa la condizione threshold_visit_count O la condizione threshold_time, aggiungi due relaxations con lo stesso level: uno con solo threshold_visit_count impostato e l'altro con solo threshold_time impostato. Se una visita soddisfa le condizioni di più relaxations, viene applicato il livello più permissivo. Di conseguenza, dall'avvio del veicolo fino alla fine del percorso, il livello di rilassamento aumenta: ovvero, il livello di rilassamento non diminuisce man mano che il percorso procede.
La tempistica e la sequenza delle visite all'itinerario che non soddisfano le condizioni di soglia di alcun relaxations sono completamente vincolate e non è possibile inserire visite in queste sequenze. Inoltre, se l'inizio o la fine di una corsa non soddisfa le condizioni di alcuna agevolazione, l'orario è fisso, a meno che il veicolo non sia vuoto.
| Campi | |
|---|---|
level |
Il livello di rilassamento del vincolo che si applica quando le condizioni in corrispondenza o dopo |
threshold_time |
L'ora a partire dalla quale può essere applicata la deroga |
threshold_visit_count |
Il numero di visite in corrispondenza del quale o dopo il quale può essere applicata la riduzione Se è |
Livello
Esprime i diversi livelli di rilassamento dei vincoli, che vengono applicati per una visita e quelle successive quando soddisfano le condizioni di soglia.
L'elenco seguente è in ordine di rilassamento crescente.
| Enum | |
|---|---|
LEVEL_UNSPECIFIED |
Livello di rilassamento predefinito implicito: nessun vincolo viene rilassato, ovvero tutte le visite sono completamente vincolate. Questo valore non deve essere utilizzato esplicitamente in |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Gli orari di inizio delle visite e di inizio/fine del veicolo saranno meno rigidi, ma ogni visita rimane associata allo stesso veicolo e la sequenza delle visite deve essere rispettata: non è possibile inserire una visita tra due visite o prima di una visita. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Come RELAX_VISIT_TIMES_AFTER_THRESHOLD, ma anche la sequenza delle visite è meno rigida: le visite possono essere eseguite solo da questo veicolo, ma possono potenzialmente non essere eseguite. |
RELAX_ALL_AFTER_THRESHOLD |
Come RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, ma il veicolo è anche rilassato: le visite sono completamente senza costi alla data/ora della soglia e possono potenzialmente non essere eseguite. |
InputConfig
Specifica un input per [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Campi | |
|---|---|
data_format |
Obbligatorio. Il formato dei dati di input. |
Campo unione source. Obbligatorio. source può essere solo uno dei seguenti tipi: |
|
gcs_source |
Una posizione in Google Cloud Storage. Deve essere un singolo oggetto (file). |
Località
Incapsula una posizione (un punto geografico e un orientamento facoltativo).
| Campi | |
|---|---|
lat_lng |
Le coordinate geografiche del waypoint. |
heading |
La direzione della bussola associata alla direzione del flusso di traffico. Questo valore viene utilizzato per specificare il lato della strada da utilizzare per il ritiro e la riconsegna. I valori della direzione possono essere compresi tra 0 e 360, dove 0 specifica una direzione verso nord, 90 specifica una direzione verso est e così via. |
OptimizeToursLongRunningMetadata
Questo tipo non contiene campi.
Metadati dell'operazione per le chiamate OptimizeToursLongRunning.
OptimizeToursRequest
Richiesta da inviare a un risolutore di ottimizzazione del tour che definisce il modello di spedizione da risolvere e i parametri di ottimizzazione.
| Campi | |
|---|---|
parent |
Obbligatorio. Progetto o posizione di destinazione per effettuare una chiamata. Formato:
Se non viene specificata una località, verrà scelta automaticamente una regione. |
timeout |
Se questo timeout è impostato, il server restituisce una risposta prima che sia trascorso il periodo di timeout o che sia stata raggiunta la scadenza del server per le richieste sincrone, a seconda di quale si verifica per prima. Per le richieste asincrone, il server genererà una soluzione (se possibile) prima della scadenza del timeout. |
model |
Modello di spedizione da risolvere. |
solving_mode |
Per impostazione predefinita, la modalità di risoluzione è |
search_mode |
Modalità di ricerca utilizzata per risolvere la richiesta. |
injected_first_solution_routes[] |
Guida l'algoritmo di ottimizzazione a trovare una prima soluzione simile a una precedente. Il modello è vincolato quando viene creata la prima soluzione. Le spedizioni non eseguite su un percorso vengono saltate implicitamente nella prima soluzione, ma potrebbero essere eseguite nelle soluzioni successive. La soluzione deve soddisfare alcuni presupposti di validità di base:
Se la soluzione inserita non è fattibile, non viene necessariamente restituito un errore di convalida e potrebbe essere restituito un errore che indica l'infattibilità. |
injected_solution_constraint |
Limita l'algoritmo di ottimizzazione per trovare una soluzione finale simile a una precedente. Ad esempio, può essere utilizzato per bloccare le parti dei percorsi già completate o da completare, ma che non devono essere modificate. Se la soluzione inserita non è fattibile, non viene necessariamente restituito un errore di convalida e potrebbe essere restituito un errore che indica l'infattibilità. |
refresh_details_routes[] |
Se non è vuoto, i percorsi specificati verranno aggiornati senza modificare la sequenza sottostante di visite o i tempi di percorrenza: verranno aggiornati solo gli altri dettagli. Il modello non viene risolto. A partire da novembre 2020, questo campo viene compilato solo con le polilinee dei percorsi non vuoti e richiede che I campi Questo campo non deve essere utilizzato insieme a
|
interpret_injected_solutions_using_labels |
Se è true:
Questa interpretazione si applica ai campi Se true, le etichette nelle seguenti categorie devono essere visualizzate al massimo una volta nella rispettiva categoria:
Se un La rimozione di visite di route o di interi itinerari da una soluzione inserita può influire sui vincoli impliciti, il che può comportare modifiche alla soluzione, errori di convalida o impossibilità di trovare una soluzione. NOTA: il chiamante deve assicurarsi che ogni |
consider_road_traffic |
Prendi in considerazione la stima del traffico nel calcolo dei campi |
populate_polylines |
Se è true, le polilinee verranno inserite nelle risposte |
populate_transition_polylines |
Se true, le polilinee e i token di percorso verranno inseriti nella risposta |
allow_large_deadline_despite_interruption_risk |
Se questa opzione è impostata, la richiesta può avere una scadenza (vedi https://grpc.io/blog/deadlines) fino a 60 minuti. In caso contrario, il termine massimo è di soli 30 minuti. Tieni presente che le richieste di lunga durata hanno un rischio di interruzione significativamente maggiore (ma comunque basso). |
use_geodesic_distances |
Se è true, le distanze di viaggio verranno calcolate utilizzando le distanze geodetiche anziché quelle di Google Maps e i tempi di viaggio verranno calcolati utilizzando le distanze geodetiche con una velocità definita da |
label |
Etichetta che può essere utilizzata per identificare questa richiesta, riportata in |
geodesic_meters_per_second |
Quando |
max_validation_errors |
Tronca il numero di errori di convalida restituiti. Questi errori sono in genere associati a un payload di errore INVALID_ARGUMENT come dettaglio dell'errore BadRequest (https://cloud.google.com/apis/design/errors#error_details), a meno che solving_mode=VALIDATE_ONLY: vedi il campo |
SearchMode
Modalità che definisce il comportamento della ricerca, bilanciando la latenza rispetto alla qualità della soluzione. In tutte le modalità, viene applicata la scadenza della richiesta globale.
| Enum | |
|---|---|
SEARCH_MODE_UNSPECIFIED |
Modalità di ricerca non specificata, equivalente a RETURN_FAST. |
RETURN_FAST |
Interrompi la ricerca dopo aver trovato la prima soluzione valida. |
CONSUME_ALL_AVAILABLE_TIME |
Utilizza tutto il tempo disponibile per cercare soluzioni migliori. |
SolvingMode
Definisce in che modo il risolutore deve gestire la richiesta. In tutte le modalità, tranne VALIDATE_ONLY, se la richiesta non è valida, riceverai un errore INVALID_REQUEST. Consulta max_validation_errors per limitare il numero di errori restituiti.
| Enum | |
|---|---|
DEFAULT_SOLVE |
Risolvi il modello. Gli avvisi possono essere emessi in [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
Valida solo il modello senza risolverlo: compila il maggior numero possibile di OptimizeToursResponse.validation_errors. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
Vengono compilati solo IMPORTANTE: non tutte le spedizioni non fattibili vengono restituite qui, ma solo quelle rilevate come non fattibili durante la preelaborazione. |
TRANSFORM_AND_RETURN_REQUEST |
Questa modalità funziona solo se Sperimentale: per ulteriori dettagli, consulta la pagina https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
OptimizeToursResponse
Risposta dopo la risoluzione di un problema di ottimizzazione del tour contenente i percorsi seguiti da ciascun veicolo, le spedizioni che sono state saltate e il costo complessivo della soluzione.
| Campi | |
|---|---|
routes[] |
Percorsi calcolati per ogni veicolo; l'i-esimo percorso corrisponde all'i-esimo veicolo nel modello. |
request_label |
Copia di |
skipped_shipments[] |
L'elenco di tutte le spedizioni saltate. |
validation_errors[] |
Elenco di tutti gli errori di convalida che siamo riusciti a rilevare in modo indipendente. Consulta la spiegazione di "ERRORI MULTIPLI" per il messaggio |
processed_request |
In alcuni casi, modifichiamo la richiesta in entrata prima di risolverla, ad esempio aggiungendo costi. Se solving_mode == TRANSFORM_AND_RETURN_REQUEST, la richiesta modificata viene restituita qui. Sperimentale: per ulteriori dettagli, consulta la pagina https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
metrics |
Metriche di durata, distanza e utilizzo per questa soluzione. |
Metriche
Metriche complessive, aggregate per tutti i percorsi.
| Campi | |
|---|---|
aggregated_route_metrics |
Aggregata sui percorsi. Ogni metrica è la somma (o il valore massimo, per i caricamenti) di tutti i campi |
skipped_mandatory_shipment_count |
Numero di spedizioni obbligatorie saltate. |
used_vehicle_count |
Numero di veicoli utilizzati. Nota: se un percorso del veicolo è vuoto e |
earliest_vehicle_start_time |
L'ora di inizio più recente per un veicolo usato, calcolata come il minimo di tutti i veicoli usati di |
latest_vehicle_end_time |
L'ora di fine più recente per un veicolo usato, calcolata come il massimo di tutti i veicoli usati di |
costs |
Costo della soluzione, suddiviso per campi della richiesta correlati ai costi. Le chiavi sono percorsi proto, relativi all'input OptimizeToursRequest, ad es. "model.shipments.pickups.cost", e i valori sono il costo totale generato dal campo di costo corrispondente, aggregato nell'intera soluzione. In altre parole, costs["model.shipments.pickups.cost"] è la somma di tutti i costi di ritiro della soluzione. Tutti i costi definiti nel modello sono riportati in dettaglio qui, ad eccezione dei costi relativi a TransitionAttributes che vengono riportati solo in modo aggregato a partire dal 01/01/2022. |
total_cost |
Costo totale della soluzione. La somma di tutti i valori nella mappa dei costi. |
OptimizeToursUriMetadata
Questo tipo non contiene campi.
Metadati dell'operazione per le chiamate OptimizeToursUri.
OptimizeToursUriRequest
Una richiesta utilizzata dal metodo OptimizeToursUri.
| Campi | |
|---|---|
parent |
Obbligatorio. Progetto o posizione di destinazione per effettuare una chiamata. Formato:
Se non viene specificata una località, verrà scelta automaticamente una regione. |
input |
Obbligatorio. L'URI dell'oggetto Cloud Storage contenente |
output |
Obbligatorio. L'URI dell'oggetto Cloud Storage che conterrà |
OptimizeToursUriResponse
Una risposta restituita dal metodo OptimizeToursUri.
| Campi | |
|---|---|
output |
Facoltativo. L'URI dell'oggetto Cloud Storage contenente L' |
OptimizeToursValidationError
Descrive un errore o un avviso riscontrato durante la convalida di un OptimizeToursRequest.
| Campi | |
|---|---|
code |
Un errore di convalida è definito dalla coppia ( I campi che seguono questa sezione forniscono maggiori informazioni sull'errore. MULTIPLE ERRORS: quando sono presenti più errori, il processo di convalida tenta di restituirne diversi. Proprio come un compilatore, questo è un processo imperfetto. Alcuni errori di convalida sono "gravi", il che significa che interrompono l'intera procedura di convalida. Questo è il caso, tra gli altri, degli errori STABILITÀ: |
display_name |
Il nome visualizzato dell'errore. |
fields[] |
Un contesto di errore può coinvolgere 0, 1 (la maggior parte delle volte) o più campi. Ad esempio, il primo ritiro del veicolo n. 4 e della spedizione n. 2 può essere indicato come segue: Tieni presente, tuttavia, che la cardinalità di |
error_message |
Stringa leggibile che descrive l'errore. Esiste una mappatura 1:1 tra STABILITÀ: non stabile: il messaggio di errore associato a un determinato |
offending_values |
Può contenere il valore o i valori dei campi. Questa opzione non è sempre disponibile. Non dovresti assolutamente fare affidamento su questa funzionalità e utilizzarla solo per il debug manuale del modello. |
FieldReference
Specifica un contesto per l'errore di convalida. Un FieldReference fa sempre riferimento a un determinato campo in questo file e segue la stessa struttura gerarchica. Ad esempio, potremmo specificare l'elemento n. 2 di start_time_windows del veicolo n. 5 utilizzando:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
Tuttavia, omettiamo le entità di primo livello come OptimizeToursRequest o ShipmentModel per evitare di affollare il messaggio.
| Campi | |
|---|---|
name |
Nome del campo, ad esempio "vehicles". |
sub_field |
Sotto-campo nidificato in modo ricorsivo, se necessario. |
Campo unione
|
|
index |
Indice del campo se ripetuto. |
key |
Chiave se il campo è una mappa. |
OutputConfig
Specifica una destinazione per i risultati di [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| Campi | |
|---|---|
data_format |
Obbligatorio. Il formato dei dati di output. |
Campo unione destination. Obbligatorio. destination può essere solo uno dei seguenti tipi: |
|
gcs_destination |
La posizione di Google Cloud Storage in cui scrivere l'output. |
RouteModifiers
Contiene un insieme di condizioni facoltative da soddisfare durante il calcolo degli itinerari dei veicoli. Questo è simile a RouteModifiers nell'API Routes Preferred di Google Maps Platform. Vedi: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Campi | |
|---|---|
avoid_tolls |
Specifica se evitare le strade a pedaggio, se ragionevole. Verrà data la preferenza ai percorsi che non contengono strade a pedaggio. Si applica solo alle modalità di viaggio motorizzate. |
avoid_highways |
Specifica se evitare le autostrade, se ragionevole. Verrà data la preferenza ai percorsi che non includono autostrade. Si applica solo alle modalità di trasporto motorizzate. |
avoid_ferries |
Specifica se evitare i traghetti, se ragionevole. Verrà data la priorità ai percorsi che non prevedono viaggi in traghetto. Si applica solo alle modalità di trasporto motorizzate. |
avoid_indoor |
Facoltativo. Specifica se evitare la navigazione al chiuso, ove ragionevole. Verrà data la priorità ai percorsi che non includono la navigazione indoor. Si applica solo alla modalità di viaggio |
Spedizione
La spedizione di un singolo articolo, da uno dei suoi ritiri a una delle sue consegne. Affinché la spedizione venga considerata eseguita, un veicolo univoco deve visitare una delle sue sedi di ritiro (e ridurre di conseguenza le sue capacità di riserva), quindi visitare una delle sue sedi di consegna in un secondo momento (e quindi aumentare di nuovo le sue capacità di riserva di conseguenza).
| Campi | |
|---|---|
display_name |
Il nome visualizzato della spedizione definito dall'utente. Può contenere fino a 63 caratteri e può utilizzare caratteri UTF-8. |
pickups[] |
Insieme di alternative di ritiro associate alla spedizione. Se non specificato, il veicolo deve visitare solo una località corrispondente alle consegne. |
deliveries[] |
Insieme di alternative di consegna associate alla spedizione. Se non specificato, il veicolo deve visitare solo una località corrispondente ai ritiri. |
load_demands |
Richieste di carico della spedizione (ad esempio peso, volume, numero di pallet e così via). Le chiavi nella mappa devono essere identificatori che descrivono il tipo di carico corrispondente, idealmente includendo anche le unità. Ad esempio: "weight_kg", "volume_gallons", "pallet_count" e così via. Se una determinata chiave non viene visualizzata nella mappa, il carico corrispondente viene considerato nullo. |
allowed_vehicle_indices[] |
L'insieme di veicoli che possono eseguire questa spedizione. Se è vuoto, tutti i veicoli possono eseguirla. I veicoli sono indicati dal loro indice nell'elenco |
costs_per_vehicle[] |
Specifica il costo sostenuto quando questa spedizione viene consegnata da ciascun veicolo. Se specificato, deve avere UNO dei seguenti valori:
Questi costi devono essere nella stessa unità di |
costs_per_vehicle_indices[] |
Indici dei veicoli a cui si applica |
pickup_to_delivery_absolute_detour_limit |
Specifica il tempo massimo di deviazione assoluto rispetto al percorso più breve dal ritiro alla consegna. Se specificato, deve essere non negativo e la spedizione deve contenere almeno un ritiro e una consegna. Ad esempio, sia t il tempo più breve necessario per andare dall'alternativa di ritiro selezionata direttamente all'alternativa di consegna selezionata. L'impostazione Se per la stessa spedizione vengono specificati limiti sia relativi che assoluti, per ogni possibile coppia di ritiro/consegna viene utilizzato il limite più restrittivo. A partire dal 10/2017, le deviazioni sono supportate solo quando le durate del viaggio non dipendono dai veicoli. |
pickup_to_delivery_time_limit |
Specifica la durata massima dall'inizio del ritiro all'inizio della consegna di una spedizione. Se specificato, deve essere non negativo e la spedizione deve contenere almeno un ritiro e una consegna. Ciò non dipende dalle alternative selezionate per il ritiro e la consegna, né dalla velocità del veicolo. Questo valore può essere specificato insieme ai vincoli di deviazione massimi: la soluzione rispetterà entrambe le specifiche. |
shipment_type |
Stringa non vuota che specifica un "tipo" per questa spedizione. Questa funzionalità può essere utilizzata per definire incompatibilità o requisiti tra Differisce da |
label |
Specifica un'etichetta per questa spedizione. Questa etichetta viene riportata nella risposta in |
ignore |
Se il valore è true, salta questa spedizione, ma non applicare un L'ignoramento di una spedizione genera un errore di convalida quando nel modello sono presenti È consentito ignorare una spedizione eseguita in |
penalty_cost |
Se la spedizione non viene completata, questa penalità viene aggiunta al costo complessivo dei percorsi. Una spedizione viene considerata completata se viene visitata una delle sue alternative di ritiro e consegna. Il costo può essere espresso nella stessa unità utilizzata per tutti gli altri campi correlati ai costi nel modello e deve essere positivo. IMPORTANTE: se questa penalità non è specificata, viene considerata infinita, ovvero la spedizione deve essere completata. |
pickup_to_delivery_relative_detour_limit |
Specifica il tempo di deviazione relativo massimo rispetto al percorso più breve dal ritiro alla consegna. Se specificato, deve essere non negativo e la spedizione deve contenere almeno un ritiro e una consegna. Ad esempio, sia t il tempo più breve necessario per andare dall'alternativa di ritiro selezionata direttamente all'alternativa di consegna selezionata. L'impostazione Se per la stessa spedizione vengono specificati limiti sia relativi che assoluti, per ogni possibile coppia di ritiro/consegna viene utilizzato il limite più restrittivo. A partire dal 10/2017, le deviazioni sono supportate solo quando le durate del viaggio non dipendono dai veicoli. |
Carica
Quando esegui una visita, un importo predefinito può essere aggiunto al carico del veicolo se si tratta di un ritiro o sottratto se si tratta di una consegna. Questo messaggio definisce tale importo. Leggi i load_demands.
| Campi | |
|---|---|
amount |
L'importo in base al quale varia il carico del veicolo che esegue la visita corrispondente. Poiché è un numero intero, agli utenti viene consigliato di scegliere un'unità appropriata per evitare la perdita di precisione. Deve essere ≥ 0. |
VisitRequest
Richiesta di una visita che può essere effettuata da un veicolo: ha una geolocalizzazione (o due, vedi sotto), orari di apertura e chiusura rappresentati da finestre temporali e una durata del servizio (tempo trascorso dal veicolo una volta arrivato per il ritiro o la consegna delle merci).
| Campi | |
|---|---|
arrival_location |
La posizione geografica in cui arriva il veicolo quando esegue questa |
arrival_waypoint |
Il waypoint in cui arriva il veicolo quando esegue questo |
departure_location |
La posizione geografica da cui parte il veicolo dopo aver completato questo |
departure_waypoint |
Il waypoint da cui il veicolo parte dopo aver completato questo |
tags[] |
Specifica i tag allegati alla richiesta di visita. Non sono consentite stringhe vuote o duplicate. |
time_windows[] |
Finestre temporali che vincolano l'orario di arrivo a una visita. Tieni presente che un veicolo può partire al di fuori della finestra temporale di arrivo, ovvero l'orario di arrivo e la durata non devono rientrare in una finestra temporale. Ciò può comportare tempi di attesa se il veicolo arriva prima delle ore L'assenza di Le finestre temporali devono essere disgiunte, ovvero nessuna finestra temporale deve sovrapporsi o essere adiacente a un'altra e devono essere in ordine crescente.
|
duration |
Durata della visita, ovvero il tempo trascorso dal veicolo tra l'arrivo e la partenza (da aggiungere all'eventuale tempo di attesa; vedi |
cost |
Costo per gestire questa richiesta di visita su un itinerario del veicolo. Può essere utilizzato per pagare costi diversi per ogni alternativa di ritiro o consegna di una spedizione. Questo costo deve essere espresso nella stessa unità di |
load_demands |
Carico di lavoro di questa richiesta di visita. È come il campo |
visit_types[] |
Specifica i tipi di visita. Può essere utilizzato per allocare il tempo aggiuntivo necessario a un veicolo per completare la visita (vedi Un tipo può essere visualizzato una sola volta. |
label |
Specifica un'etichetta per questo |
avoid_u_turns |
Specifica se in questa posizione devono essere evitate le inversioni a U nei percorsi in auto. L'evitamento dell'inversione a U è un tentativo "best effort" e l'evitamento completo non è garantito. Questa è una funzionalità sperimentale e il comportamento è soggetto a modifiche. Sperimentale: per ulteriori dettagli, visita la pagina https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request. |
ShipmentModel
Un modello di spedizione contiene un insieme di spedizioni che devono essere eseguite da un insieme di veicoli, riducendo al minimo il costo complessivo, che è la somma di:
- il costo di pianificazione degli itinerari dei veicoli (somma del costo per tempo totale, del costo per tempo di percorrenza e del costo fisso per tutti i veicoli).
- le sanzioni per spedizioni non eseguite.
- il costo della durata globale delle spedizioni
| Campi | |
|---|---|
shipments[] |
Insieme di spedizioni che devono essere eseguite nel modello. |
vehicles[] |
Il set di veicoli che possono essere utilizzati per eseguire le visite. |
objectives[] |
L'insieme di obiettivi per questo modello, che trasformeremo in costi. Se non è vuoto, il modello di input deve essere senza costi. Per ottenere la richiesta modificata, utilizza Sperimentale: per ulteriori dettagli, consulta la pagina https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
global_start_time |
Ora di inizio e ora di fine globali del modello: non possono essere considerate valide ore al di fuori di questo intervallo. L'intervallo di tempo del modello deve essere inferiore a un anno, ovvero Quando utilizzi i campi |
global_end_time |
Se non viene impostato, viene utilizzato il valore predefinito 00:00:00 UTC, 1° gennaio 1971 (ovvero secondi: 31536000, nanosecondi: 0). |
global_duration_cost_per_hour |
La "durata globale" del piano complessivo è la differenza tra l'ora di inizio effettiva più recente e l'ora di fine effettiva più recente di tutti i veicoli. Gli utenti possono assegnare un costo orario a questa quantità per cercare di ottimizzare il completamento del lavoro nel più breve tempo possibile, ad esempio. Questo costo deve essere espresso nella stessa unità di |
duration_distance_matrices[] |
Specifica le matrici di durata e distanza utilizzate nel modello. Se questo campo è vuoto, verranno utilizzate le distanze di Google Maps o geodetiche, a seconda del valore del campo Esempi di utilizzo:
|
duration_distance_matrix_src_tags[] |
Tag che definiscono le origini delle matrici di durata e distanza; I tag corrispondono a |
duration_distance_matrix_dst_tags[] |
Tag che definiscono le destinazioni delle matrici di durata e distanza; I tag corrispondono a |
transition_attributes[] |
Attributi di transizione aggiunti al modello. |
shipment_type_incompatibilities[] |
Set di shipment_types [tipi_di_spedizione] incompatibili (vedi |
shipment_type_requirements[] |
Set di requisiti |
precedence_rules[] |
Insieme di regole di precedenza che devono essere applicate nel modello. IMPORTANTE: l'utilizzo delle regole di precedenza limita le dimensioni del problema che può essere ottimizzato. Le richieste che utilizzano regole di precedenza che includono molte spedizioni potrebbero essere rifiutate. |
max_active_vehicles |
Vincola il numero massimo di veicoli attivi. Un veicolo è attivo se il suo percorso esegue almeno una spedizione. Questo può essere utilizzato per limitare il numero di percorsi nel caso in cui ci siano meno conducenti rispetto ai veicoli e che il parco veicoli sia eterogeneo. L'ottimizzazione selezionerà quindi il miglior sottoinsieme di veicoli da utilizzare. Deve essere strettamente positivo. |
DurationDistanceMatrix
Specifica una Distance Matrix di durata e distanza dalle posizioni di partenza della visita e del veicolo alle posizioni di fine della visita e del veicolo.
| Campi | |
|---|---|
rows[] |
Specifica le righe della matrice di durata e distanza. Deve contenere lo stesso numero di elementi di |
vehicle_start_tag |
Tag che definisce a quali veicoli si applica questa matrice di durata e distanza. Se è vuoto, si applica a tutti i veicoli e può essere presente una sola matrice. Ogni avvio del veicolo deve corrispondere esattamente a una matrice, ovvero esattamente uno dei suoi campi Tutte le matrici devono avere un |
Riga
Specifica una riga della matrice di durata e distanza.
| Campi | |
|---|---|
durations[] |
Valori di durata per una determinata riga. Deve contenere lo stesso numero di elementi di |
meters[] |
Valori di distanza per una determinata riga. Se nel modello non sono presenti costi o vincoli relativi alle distanze, questo campo può essere lasciato vuoto; in caso contrario, deve contenere tanti elementi quanti sono i |
Obiettivo
Gli obiettivi sostituiscono completamente il modello di costi e sono quindi incompatibili con i costi preesistenti. Ogni obiettivo è associato a una serie di costi predefiniti per, ad esempio, veicoli, spedizioni o attributi di transizione.
Sperimentale: per ulteriori dettagli, consulta la pagina https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.
| Campi | |
|---|---|
type |
Il tipo di obiettivo. |
weight |
Quanto deve contare questo obiettivo rispetto agli altri. Può essere qualsiasi numero non negativo; la somma dei pesi non deve essere pari a 1. I pesi hanno valore predefinito 1.0. |
Tipo
Il tipo di obiettivo che verrà mappato a un insieme di costi.
| Enum | |
|---|---|
DEFAULT |
Verrà utilizzato un insieme predefinito di costi per garantire una soluzione ragionevole. Nota: questo obiettivo può essere utilizzato da solo, ma verrà sempre aggiunto con un peso di 1,0, come base di riferimento, agli obiettivi specificati dall'utente, se non è già presente. |
MIN_DISTANCE |
Obiettivi "MIN". Ridurre al minimo la distanza totale percorsa. |
MIN_WORKING_TIME |
Ridurre al minimo il tempo di lavoro totale, sommato per tutti i veicoli. |
MIN_TRAVEL_TIME |
Come sopra, ma concentrandosi solo sul tempo di percorrenza. |
MIN_NUM_VEHICLES |
Riduci al minimo il numero di veicoli utilizzati. |
PrecedenceRule
Una regola di precedenza tra due eventi (ogni evento è il ritiro o la consegna di una spedizione): l'evento "secondo" deve iniziare almeno offset_duration dopo l'inizio dell'evento "primo".
Diverse precedenze possono fare riferimento agli stessi eventi (o a eventi correlati), ad esempio "il ritiro di B avviene dopo la consegna di A" e "il ritiro di C avviene dopo il ritiro di B".
Inoltre, le precedenze vengono applicate solo quando vengono eseguite entrambe le spedizioni e vengono ignorate in caso contrario.
| Campi | |
|---|---|
first_is_delivery |
Indica se il primo evento è una consegna. |
second_is_delivery |
Indica se il "secondo" evento è una consegna. |
offset_duration |
L'offset tra il "primo" e il "secondo" evento. Può essere negativo. |
first_index |
Indice di spedizione dell'evento "first". Questo campo deve essere specificato. |
second_index |
Indice di spedizione del "secondo" evento. Questo campo deve essere specificato. |
ShipmentRoute
L'itinerario di un veicolo può essere scomposto, lungo l'asse temporale, in questo modo (supponiamo che ci siano n visite):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Tieni presente che facciamo una distinzione tra:
- "eventi puntuali", come l'inizio e la fine del viaggio del veicolo e l'inizio e la fine di ogni visita (ovvero l'arrivo e la partenza). Si verificano in un determinato secondo.
- "intervalli di tempo", come le visite stesse e la transizione tra le visite. Sebbene gli intervalli di tempo possano a volte avere durata zero, ovvero iniziare e terminare nello stesso secondo, spesso hanno una durata positiva.
Invarianti:
- Se ci sono n visite, ci sono n+1 transizioni.
- Una visita è sempre preceduta da una transizione (stesso indice) e seguita da una transizione (indice + 1).
- L'avvio del veicolo è sempre seguito dalla transizione n. 0.
- La fine del veicolo è sempre preceduta dalla transizione n.
Ingrandendo, ecco cosa succede durante un Transition e un Visit:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Infine, ecco come possono essere organizzati gli spostamenti, le pause, i ritardi e le attese durante una transizione.
- Non si sovrappongono.
- Il RITARDO è univoco e deve essere un periodo di tempo contiguo immediatamente precedente alla visita successiva (o alla fine della corsa). Pertanto, è sufficiente conoscere la durata del ritardo per conoscerne l'ora di inizio e di fine.
- Le PAUSE sono periodi di tempo contigui e non sovrapposti. La risposta specifica l'ora di inizio e la durata di ogni pausa.
- TRAVEL e WAIT sono "preemptive": possono essere interrotti più volte durante questa transizione. I clienti possono presumere che il viaggio avvenga "il prima possibile" e che il "tempo di attesa" riempia il tempo rimanente.
Un esempio (complesso):
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| Campi | |
|---|---|
vehicle_index |
Veicolo che esegue il percorso, identificato dal relativo indice nell'origine |
vehicle_label |
Etichetta del veicolo che esegue questa route, uguale a |
vehicle_start_time |
Ora in cui il veicolo inizia il percorso. |
vehicle_end_time |
Ora in cui il veicolo termina il percorso. |
visits[] |
Sequenza ordinata di visite che rappresentano un percorso. visits[i] è la i-esima visita del percorso. Se questo campo è vuoto, il veicolo viene considerato inutilizzato. |
transitions[] |
Elenco ordinato delle transizioni per l'itinerario. |
has_traffic_infeasibilities |
Quando L'arrivo in next_visit avverrà probabilmente più tardi rispetto all'attuale finestra temporale a causa dell'aumento della stima del tempo di percorrenza |
route_polyline |
La rappresentazione della polilinea codificata del percorso. Questo campo viene compilato solo se il criterio |
breaks[] |
Pause programmate per il veicolo che esegue questo percorso. La sequenza |
metrics |
Metriche di durata, distanza e carico per questo percorso. I campi di |
vehicle_fullness |
Campo Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
route_costs |
Costo dell'itinerario, suddiviso per campi della richiesta correlati al costo. Le chiavi sono i percorsi proto, relativi all'input OptimizeToursRequest, ad esempio "model.shipments.pickups.cost", e i valori sono il costo totale generato dal campo di costo corrispondente, aggregato sull'intero percorso. In altre parole, costs["model.shipments.pickups.cost"] è la somma di tutti i costi di ritiro lungo il percorso. Tutti i costi definiti nel modello sono riportati in dettaglio qui, ad eccezione dei costi relativi a TransitionAttributes che vengono riportati solo in modo aggregato a partire dal 01/01/2022. |
route_total_cost |
Costo totale dell'itinerario. La somma di tutti i costi nella mappa dei costi. |
Pausa
Dati che rappresentano l'esecuzione di una pausa.
| Campi | |
|---|---|
start_time |
Ora di inizio di una pausa. |
duration |
Durata di una pausa. |
EncodedPolyline
La rappresentazione codificata di una polilinea. Per ulteriori informazioni sulla codifica polilineare, visita le pagine https://developers.google.com/maps/documentation/utilities/polylinealgorithm e https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
| Campi | |
|---|---|
points |
Stringa che rappresenta i punti codificati della polilinea. |
Transizione
Transizione tra due eventi sul percorso. Consulta la descrizione di ShipmentRoute.
Se il veicolo non dispone di start_location e/o end_location, le metriche di viaggio corrispondenti sono pari a 0.
| Campi | |
|---|---|
travel_duration |
Durata del viaggio durante questa transizione. |
travel_distance_meters |
Distanza percorsa durante la transizione. |
traffic_info_unavailable |
Quando il traffico viene richiesto tramite |
delay_duration |
Somma delle durate del ritardo applicate a questa transizione. Se presente, il ritardo inizia esattamente |
break_duration |
Somma della durata delle pause che si verificano durante questa transizione, se presenti. I dettagli sull'ora di inizio e sulla durata di ogni pausa sono memorizzati in |
wait_duration |
Tempo trascorso in attesa durante questa transizione. La durata dell'attesa corrisponde al tempo di inattività e non include il tempo di pausa. Tieni inoltre presente che questo tempo di attesa potrebbe essere suddiviso in diversi intervalli non contigui. |
total_duration |
Durata totale della transizione, fornita per comodità. È uguale a:
|
start_time |
Ora di inizio di questa transizione. |
route_polyline |
La rappresentazione della polilinea codificata del percorso seguito durante la transizione. Questo campo viene compilato solo se il criterio |
route_token |
Solo output. Un token opaco che può essere passato all'SDK Navigation per ricostruire l'itinerario durante la navigazione e, in caso di ricalcolo, rispettare l'intenzione originale al momento della creazione dell'itinerario. Considera questo token come un blob opaco. Non confrontare il suo valore tra le richieste, in quanto potrebbe cambiare anche se il servizio restituisce esattamente lo stesso percorso. Questo campo viene compilato solo se il criterio |
vehicle_loads |
Carichi del veicolo durante questa transizione, per ogni tipo che compare nel I carichi durante la prima transizione sono i carichi iniziali dell'itinerario del veicolo. Poi, dopo ogni visita, i |
VehicleLoad
Indica il carico effettivo del veicolo in un punto del percorso, per un determinato tipo (vedi Transition.vehicle_loads).
| Campi | |
|---|---|
amount |
La quantità di carico sul veicolo, per il tipo specificato. L'unità di carico è in genere indicata dal tipo. Leggi i |
Visita
Una visita eseguita durante un percorso. Questa visita corrisponde a un ritiro o a una consegna di un Shipment.
| Campi | |
|---|---|
shipment_index |
Indice del campo |
is_pickup |
Se è true, la visita corrisponde al ritiro di un |
visit_request_index |
Indice di |
start_time |
Ora in cui inizia la visita. Tieni presente che il veicolo potrebbe arrivare prima di quest'ora nella posizione della visita. Gli orari sono coerenti con |
load_demands |
Domanda totale di carico delle visite come somma della spedizione e della richiesta di visita |
detour |
Tempo di deviazione aggiuntivo dovuto alle spedizioni visitate sull'itinerario prima della visita e al potenziale tempo di attesa indotto dalle finestre temporali. Se la visita è una consegna, la deviazione viene calcolata dalla visita di ritiro corrispondente ed è uguale a: In caso contrario, viene calcolato dal veicolo |
shipment_label |
Copia del |
visit_label |
Copia del |
visit_type |
Facoltativo. Specifica il tipo di visita. Esegue l'override del campo |
injected_solution_location_token |
Un token opaco che rappresenta le informazioni su una posizione di visita. Questo campo può essere compilato nelle visite degli itinerari dei risultati quando Sperimentale: per ulteriori dettagli, visita la pagina https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request. |
VisitType
Indica se la visita è un ritiro, una consegna o una visita a un Stop. Le visite a un Stop vengono utilizzate solo quando è attivata l'ottimizzazione multimodale.
| Enum | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
Tipo di visita non specificato. |
PICKUP_SHIPMENT |
La visita corrisponde al ritiro di una spedizione. |
DELIVER_SHIPMENT |
La visita corrisponde a una consegna della spedizione. |
ShipmentTypeIncompatibility
Specifica le incompatibilità tra le spedizioni in base al relativo shipment_type. La visualizzazione di spedizioni incompatibili sullo stesso percorso è limitata in base alla modalità di incompatibilità.
| Campi | |
|---|---|
types[] |
Elenco dei tipi incompatibili. Due spedizioni con |
incompatibility_mode |
Modalità applicata all'incompatibilità. |
IncompatibilityMode
Modalità che definiscono come viene limitato l'aspetto delle spedizioni incompatibili sullo stesso percorso.
| Enum | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Modalità di incompatibilità non specificata. Questo valore non deve mai essere utilizzato. |
NOT_PERFORMED_BY_SAME_VEHICLE |
In questa modalità, due spedizioni con tipi incompatibili non possono mai condividere lo stesso veicolo. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
In questa modalità, due spedizioni con tipi incompatibili non possono mai trovarsi sullo stesso veicolo contemporaneamente:
|
ShipmentTypeRequirement
Specifica i requisiti tra le spedizioni in base al relativo shipment_type. I dettagli del requisito sono definiti dalla modalità del requisito.
| Campi | |
|---|---|
required_shipment_type_alternatives[] |
Elenco dei tipi di spedizione alternativi richiesti da |
dependent_shipment_types[] |
Tutte le spedizioni con un tipo nel campo NOTA: non sono consentite catene di requisiti in cui un |
requirement_mode |
Modalità applicata al requisito. |
RequirementMode
Modalità che definiscono l'aspetto delle spedizioni dipendenti su una route.
| Enum | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Modalità requisito non specificata. Questo valore non deve mai essere utilizzato. |
PERFORMED_BY_SAME_VEHICLE |
In questa modalità, tutte le spedizioni "dipendenti" devono condividere lo stesso veicolo di almeno una delle spedizioni "obbligatorie". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Con la modalità Il ritiro di una spedizione "dipendente" deve quindi avere:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Come prima, tranne che le spedizioni "dipendenti" devono avere una spedizione "obbligatoria" sul veicolo al momento della consegna. |
SkippedShipment
Specifica i dettagli delle spedizioni non eseguite in una soluzione. Per i casi banali e/o se siamo in grado di identificare il motivo dell'omissione, lo indichiamo qui.
| Campi | |
|---|---|
index |
L'indice corrisponde all'indice della spedizione nell'origine |
label |
Copia del |
reasons[] |
Un elenco di motivi che spiegano perché la spedizione è stata ignorata. Vedi il commento precedente |
penalty_cost |
Si tratta di una copia del Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
estimated_incompatible_vehicle_ratio |
Rapporto stimato di veicoli che non possono eseguire questa spedizione per almeno uno dei motivi riportati di seguito. Nota: questo campo viene compilato solo quando i motivi riguardano un veicolo. Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
Motivo
Se possiamo spiegare perché la spedizione è stata ignorata, i motivi verranno elencati qui. Se il motivo non è uguale per tutti i veicoli, reason avrà più di un elemento. Una spedizione ignorata non può avere motivi duplicati, ovvero in cui tutti i campi sono uguali tranne example_vehicle_index. Esempio:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
La spedizione ignorata non è compatibile con tutti i veicoli. I motivi possono essere diversi per tutti i veicoli, ma la capacità di "Mele" di almeno un veicolo (incluso il veicolo 1) verrebbe superata, la capacità di "Pere" di almeno un veicolo (incluso il veicolo 3) verrebbe superata e il limite di distanza di almeno un veicolo (incluso il veicolo 1) verrebbe superato.
| Campi | |
|---|---|
code |
Fai riferimento ai commenti del codice. |
example_vehicle_indices[] |
Come Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
example_exceeded_capacity_type |
Se il codice motivo è |
example_vehicle_index |
Se il motivo è correlato a un'incompatibilità tra spedizione e veicolo, questo campo fornisce l'indice di un veicolo pertinente. |
Codice
Codice che identifica il tipo di motivo. L'ordine qui non ha significato. In particolare, non indica se un determinato motivo verrà visualizzato prima di un altro nella soluzione, se entrambi sono applicabili.
| Enum | |
|---|---|
CODE_UNSPECIFIED |
Questo valore non deve mai essere utilizzato. |
NO_VEHICLE |
Non è presente alcun veicolo nel modello che renda impossibile tutte le spedizioni. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
La richiesta di spedizione supera la capacità di un veicolo per alcuni tipi di capacità, uno dei quali è example_exceeded_capacity_type. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
La distanza minima necessaria per eseguire questa spedizione, ovvero dal Tieni presente che per questo calcolo utilizziamo le distanze geodetiche. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
Il tempo minimo necessario per eseguire questa spedizione, inclusi i tempi di percorrenza, attesa e servizio, supera Nota: il tempo di percorrenza viene calcolato nello scenario migliore, ovvero come distanza geodetica x 36 m/s (circa 130 km/h). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
Come sopra, ma confrontiamo solo il tempo di percorrenza minimo e il travel_duration_limit del veicolo. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
Il veicolo non può eseguire questa spedizione nello scenario migliore (vedi CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT per il calcolo del tempo) se inizia all'ora di inizio più presto: il tempo totale farebbe terminare il veicolo dopo l'ora di fine più tardi. |
VEHICLE_NOT_ALLOWED |
Il campo allowed_vehicle_indices della spedizione non è vuoto e questo veicolo non vi appartiene. |
VEHICLE_IGNORED |
Il campo Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
SHIPMENT_IGNORED |
Il campo Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
La spedizione viene saltata in Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
La deroga al percorso del veicolo specificata in Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
ZERO_PENALTY_COST |
La spedizione ha un costo di penalità pari a zero. Sebbene possa essere utile come scelta di modellazione avanzata, può anche spiegare a posteriori perché una spedizione è stata ignorata. Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
TimeWindow
Le finestre temporali limitano l'ora di un evento, ad esempio l'ora di arrivo di una visita o l'ora di inizio e di fine di un veicolo.
I limiti della finestra temporale rigida, start_time e end_time, impongono l'orario di inizio e di fine dell'evento, in modo che start_time <= event_time <=
end_time. Il limite inferiore della finestra temporale soft, soft_start_time, esprime una preferenza per l'evento che si verifichi in corrispondenza o dopo soft_start_time sostenendo un costo proporzionale al tempo che precede soft_start_time. Il limite superiore della finestra temporale flessibile, soft_end_time, esprime una preferenza per l'evento che si verifichi entro o prima di soft_end_time sostenendo un costo proporzionale al tempo trascorso dopo soft_end_time. start_time, end_time, soft_start_time e soft_end_time devono rispettare i limiti di tempo globali (vedi ShipmentModel.global_start_time e ShipmentModel.global_end_time) e:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
| Campi | |
|---|---|
start_time |
L'ora di inizio della finestra temporale rigida. Se non specificato, il valore predefinito è |
end_time |
L'ora di fine della finestra temporale rigida. Se non specificato, il valore predefinito è |
soft_start_time |
L'ora di inizio soft dell'intervallo di tempo. |
soft_end_time |
L'ora di fine flessibile della finestra temporale. |
cost_per_hour_before_soft_start_time |
Un costo orario aggiunto agli altri costi del modello se l'evento si verifica prima di soft_start_time, calcolato come: Questo costo deve essere positivo e il campo può essere impostato solo se è stato impostato soft_start_time. |
cost_per_hour_after_soft_end_time |
Un costo orario aggiunto ad altri costi nel modello se l'evento si verifica dopo le ore Questo costo deve essere positivo e il campo può essere impostato solo se è stato impostato |
TransitionAttributes
Specifica gli attributi delle transizioni tra due visite consecutive su un percorso. Diverse TransitionAttributes possono essere applicate alla stessa transizione: in questo caso, tutti i costi aggiuntivi si sommano e si applica il vincolo o il limite più rigoroso (seguendo la semantica "AND" naturale).
| Campi | |
|---|---|
src_tag |
Tag che definiscono l'insieme di transizioni (src->dst) a cui si applicano questi attributi. Una visita alla fonte o un avvio del veicolo corrisponde se il relativo |
excluded_src_tag |
Leggi i |
dst_tag |
Una visita alla destinazione o un viaggio termina se il relativo |
excluded_dst_tag |
Leggi i |
cost |
Specifica un costo per l'esecuzione di questa transizione. Questa unità è la stessa di tutti gli altri costi nel modello e non deve essere negativa. Viene applicata in aggiunta a tutti gli altri costi esistenti. |
cost_per_kilometer |
Specifica un costo per chilometro applicato alla distanza percorsa durante l'esecuzione di questa transizione. Si aggiunge a qualsiasi |
distance_limit |
Specifica un limite alla distanza percorsa durante l'esecuzione di questa transizione. A partire da giugno 2021, sono supportati solo i limiti soft. |
delay |
Specifica un ritardo sostenuto durante l'esecuzione di questa transizione. Questo ritardo si verifica sempre dopo il completamento della visita di origine e prima dell'inizio della visita di destinazione. |
Uri
Un URI (Uniform Resource Identifier) che punta a una risorsa che può essere letta e scritta dall'API Route Optimization.
| Campi | |
|---|---|
uri |
L'URI della risorsa. La risorsa potrebbe non esistere ancora. I contenuti della risorsa sono codificati come JSON o textproto. Sono supportate solo le risorse Google Cloud Storage. Se la risorsa è codificata come JSON, il nome della risorsa deve avere come suffisso |
Veicolo
Modella un veicolo in un problema di spedizione. La risoluzione di un problema di spedizione creerà un percorso che inizia da start_location e termina a end_location per questo veicolo. Un percorso è una sequenza di visite (vedi ShipmentRoute).
| Campi | |
|---|---|
display_name |
Il nome visualizzato del veicolo definito dall'utente. Può contenere fino a 63 caratteri e può utilizzare caratteri UTF-8. |
travel_mode |
La modalità di viaggio che influisce sulle strade utilizzabili dal veicolo e sulla sua velocità. Vedi anche |
route_modifiers |
Un insieme di condizioni da soddisfare che influiscono sul modo in cui vengono calcolati i percorsi per il veicolo specificato. |
start_location |
Posizione geografica in cui il veicolo inizia il percorso prima di ritirare le spedizioni. Se non specificato, il veicolo inizia dal primo ritiro. Se il modello di spedizione include matrici di durata e distanza, |
start_waypoint |
Waypoint che rappresenta una posizione geografica in cui il veicolo inizia il percorso prima di ritirare le spedizioni. Se non viene specificato né |
end_location |
Posizione geografica in cui termina il veicolo dopo aver completato l'ultimo |
end_waypoint |
Waypoint che rappresenta una posizione geografica in cui il veicolo termina il suo percorso dopo aver completato l'ultimo |
start_tags[] |
Specifica i tag allegati all'inizio del percorso del veicolo. Non sono consentite stringhe vuote o duplicate. |
end_tags[] |
Specifica i tag allegati alla fine del percorso del veicolo. Non sono consentite stringhe vuote o duplicate. |
start_time_windows[] |
Intervalli di tempo durante i quali il veicolo può partire dalla posizione iniziale. Devono rispettare i limiti di tempo globali (vedi i campi Le finestre temporali appartenenti allo stesso campo ripetuto devono essere disgiunte, ovvero nessuna finestra temporale può sovrapporsi o essere adiacente a un'altra e devono essere in ordine cronologico.
|
end_time_windows[] |
Intervalli di tempo durante i quali il veicolo può arrivare alla destinazione finale. Devono rientrare nei limiti di tempo globali (vedi i campi Le finestre temporali appartenenti allo stesso campo ripetuto devono essere disgiunte, ovvero nessuna finestra temporale può sovrapporsi o essere adiacente a un'altra e devono essere in ordine cronologico.
|
unloading_policy |
Policy di scarico applicata al veicolo. |
load_limits |
Capacità del veicolo (peso, volume, numero di pallet, ad esempio). Le chiavi nella mappa sono gli identificatori del tipo di carico, coerenti con le chiavi del campo |
cost_per_hour |
Costi del veicolo: tutti i costi si sommano e devono essere nella stessa unità di misura di Costo per ora del percorso del veicolo. Questo costo viene applicato al tempo totale impiegato per il percorso e include il tempo di percorrenza, il tempo di attesa e il tempo di visita. L'utilizzo di |
cost_per_traveled_hour |
Costo per ora di viaggio dell'itinerario del veicolo. Questo costo viene applicato solo al tempo di percorrenza impiegato dal percorso (ovvero quello riportato in |
cost_per_kilometer |
Costo per chilometro dell'itinerario del veicolo. Questo costo viene applicato alla distanza indicata in |
fixed_cost |
Costo fisso applicato se questo veicolo viene utilizzato per gestire una spedizione. |
used_if_route_is_empty |
Questo campo si applica solo ai veicoli quando il loro percorso non serve spedizioni. Indica se il veicolo deve essere considerato usato o meno in questo caso. Se è true, il veicolo va dalla posizione iniziale a quella finale anche se non serve spedizioni e vengono presi in considerazione i costi di tempo e distanza derivanti dal viaggio dalla posizione iniziale a quella finale. In caso contrario, non si sposta dalla posizione iniziale a quella finale e per questo veicolo non sono pianificati |
route_duration_limit |
Limite applicato alla durata totale del percorso del veicolo. In un determinato |
travel_duration_limit |
Limite applicato alla durata del viaggio del percorso del veicolo. In un determinato |
route_distance_limit |
Limite applicato alla distanza totale del percorso del veicolo. In un determinato |
extra_visit_duration_for_visit_type |
Specifica una mappatura dalle stringhe visit_types alle durate. La durata è il tempo da aggiungere a Se una richiesta di visita ha più tipi, verrà aggiunta una durata per ogni tipo nella mappa. |
break_rule |
Descrive il programma delle pause da applicare a questo veicolo. Se è vuoto, non verranno programmate pause per questo veicolo. |
label |
Specifica un'etichetta per questo veicolo. Questa etichetta viene riportata nella risposta come |
ignore |
Se è true, Se una spedizione viene eseguita da un veicolo ignorato in Se una spedizione viene eseguita da un veicolo ignorato in |
travel_duration_multiple |
Specifica un fattore moltiplicativo che può essere utilizzato per aumentare o diminuire i tempi di percorrenza di questo veicolo. Ad esempio, se imposti questo valore su 2.0, significa che questo veicolo è più lento e ha tempi di percorrenza doppi rispetto a quelli dei veicoli standard. Questo multiplo non influisce sulla durata delle visite. Influisce sui costi se vengono specificati AVVERTENZA: i tempi di percorrenza verranno arrotondati al secondo più vicino dopo l'applicazione di questo multiplo, ma prima di eseguire qualsiasi operazione numerica. Pertanto, un multiplo piccolo potrebbe comportare una perdita di precisione. Vedi anche |
DurationLimit
Un limite che definisce una durata massima del percorso di un veicolo. Può essere duro o morbido.
Quando viene definito un campo limite soft, devono essere definiti insieme sia la soglia massima soft sia il costo associato.
| Campi | |
|---|---|
max_duration |
Un limite rigido che vincola la durata a un massimo di max_duration. |
soft_max_duration |
Un limite soft che non impone un limite di durata massima, ma che, se violato, comporta un costo per l'itinerario. Questo costo si somma agli altri costi definiti nel modello, con la stessa unità. Se definito, |
quadratic_soft_max_duration |
Un limite soft che non impone un limite di durata massima, ma che, se violato, fa sì che il percorso comporti un costo quadratico in base alla durata. Questo costo si somma agli altri costi definiti nel modello, con la stessa unità. Se
|
cost_per_hour_after_soft_max |
Costo orario sostenuto se viene violata la soglia Il costo deve essere non negativo. |
cost_per_square_hour_after_quadratic_soft_max |
Costo per ora quadrata sostenuto se viene violata la soglia Il costo aggiuntivo è pari a 0 se la durata è inferiore alla soglia, altrimenti dipende dalla durata come segue: Il costo deve essere non negativo. |
LoadLimit
Definisce un limite di carico applicabile a un veicolo, ad esempio "questo camion può trasportare solo fino a 3500 kg". Leggi i load_limits.
| Campi | |
|---|---|
soft_max_load |
Un limite flessibile del carico. Leggi i |
cost_per_unit_above_soft_max |
Se il carico supera |
start_load_interval |
L'intervallo di carico accettabile del veicolo all'inizio del percorso. |
end_load_interval |
L'intervallo di carico accettabile del veicolo alla fine del percorso. |
max_load |
Il carico massimo accettabile. |
cost_per_kilometer |
Costo dello spostamento di un'unità di carico per un chilometro per questo veicolo. Può essere utilizzato come proxy per il consumo di carburante: se il carico è un peso (in newton), allora carico*chilometro ha la dimensione di un'energia. Sperimentale: per ulteriori dettagli, visita la pagina https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
cost_per_traveled_hour |
Costo del viaggio con un'unità di carico durante un'ora per questo veicolo. Sperimentale: per ulteriori dettagli, visita la pagina https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
Intervallo
Intervallo di importi di ricarica accettabili.
| Campi | |
|---|---|
min |
Un carico minimo accettabile. Deve essere ≥ 0. Se sono specificati entrambi, |
max |
Un carico massimo accettabile. Deve essere ≥ 0. Se non specificato, il carico massimo non è limitato da questo messaggio. Se sono specificati entrambi, |
LoadCost
Costo dello spostamento di un'unità di carico durante un Transition. Per un determinato carico, il costo è la somma di due parti:
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
Con questo costo, le soluzioni preferiscono soddisfare prima le richieste elevate o, in modo equivalente, ritirare le richieste elevate per ultime. Ad esempio, se un veicolo ha
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
e il suo percorso è inizio,ritiro,ritiro,consegna,consegna,fine con le transizioni:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
allora il costo sostenuto da questo LoadCost è (costo_sotto * carico_sotto * chilometri + costo_sopra * carico_sopra * km)
- transizione 0: 0.0
- transizione 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transizione 2: 2,0 * 15 * 1,0 + 10,0 * (20 - 15) * 1,0 = 80,0
- transizione 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transizione 4: 0.0
Quindi il LoadCost sul percorso è 120.0.
Tuttavia, se il percorso è inizio,ritiro,consegna,ritiro,consegna,fine con transizioni:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
allora il costo sostenuto da questo LoadCost è
- transizione 0: 0.0
- transizione 1: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transizione 2: 0.0
- transizione 3: 2,0 * 10 * 1,0 + 10,0 * 0 * 1,0 = 20,0
- transizione 4: 0.0
Qui il LoadCost sul percorso è 40.0.
LoadCost rende più costose le soluzioni con transizioni a carico elevato.
Sperimentale: per ulteriori dettagli, visita la pagina https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request.
| Campi | |
|---|---|
load_threshold |
Quantità di carico al di sopra della quale il costo di spostamento di un'unità di carico passa da cost_per_unit_below_threshold a cost_per_unit_above_threshold. Deve essere >= 0. |
cost_per_unit_below_threshold |
Costo dello spostamento di un'unità di carico, per ogni unità compresa tra 0 e la soglia. Deve essere un valore finito e maggiore o uguale a 0. |
cost_per_unit_above_threshold |
Costo di spostamento di un'unità di carico, per ogni unità superiore alla soglia. Nel caso speciale in cui la soglia è pari a 0, si tratta di un costo fisso per unità. Deve essere un valore finito e >= 0. |
TravelMode
Modalità di viaggio che possono essere utilizzate dai veicoli.
Questi devono essere un sottoinsieme delle modalità di viaggio dell'API Routes della Google Maps Platform. Vedi: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
Nota: i percorsi WALKING sono in versione beta e a volte potrebbero non avere marciapiedi o percorsi pedonali ben definiti. Devi mostrare questo avviso all'utente per tutti i percorsi a piedi visualizzati nella tua app.
| Enum | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Modalità di viaggio non specificata, equivalente a DRIVING. |
DRIVING |
Modalità di viaggio corrispondente alle indicazioni stradali (auto, ...). |
WALKING |
Modalità di viaggio corrispondente alle indicazioni a piedi. |
UnloadingPolicy
Norme su come può essere scaricato un veicolo. Si applica solo alle spedizioni con ritiro e consegna.
Gli altri spostamenti possono avvenire ovunque lungo il percorso, indipendentemente da unloading_policy.
| Enum | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Norme di scarico non specificate; le consegne devono avvenire solo dopo i ritiri corrispondenti. |
LAST_IN_FIRST_OUT |
Le consegne devono avvenire in ordine inverso rispetto ai ritiri |
FIRST_IN_FIRST_OUT |
Le consegne devono avvenire nello stesso ordine dei ritiri |
VehicleFullness
VehicleFullness è una metrica che calcola il livello di riempimento di un veicolo. Ogni campo VehicleFullness è compreso tra 0 e 1 e viene calcolato come rapporto tra un campo metrico con limite (ad es. AggregatedMetrics.travel_distance_meters) e il relativo limite del veicolo (ad es. Vehicle.route_distance_limit), se esistente. In caso contrario, il rapporto di riempimento rimane non impostato. Se il limite è 0, il campo è impostato su 1. Nota: quando un percorso è soggetto a problemi di traffico, alcuni rapporti di riempimento grezzi potrebbero superare 1,0, ad esempio il veicolo potrebbe superare il limite di distanza. In questi casi, i valori di riempimento vengono limitati a 1,0.
| Campi | |
|---|---|
max_fullness |
Il valore massimo di tutti gli altri campi di questo messaggio. |
distance |
Il rapporto tra |
travel_duration |
Il rapporto tra [AggregatedMetrics.travel_duration_seconds][] e |
active_duration |
Il rapporto tra [AggregatedMetrics.total_duration_seconds][] e |
max_load |
Il rapporto massimo tra tutti i tipi di [AggregatedMetrics.max_load][] e i rispettivi |
active_span |
Il rapporto (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) per un determinato veicolo. Se il denominatore non è presente, viene utilizzato ( |
Waypoint
Contiene un waypoint. I waypoint indicano le posizioni di arrivo e di partenza delle VisitRequest e le posizioni di partenza e di arrivo dei veicoli.
| Campi | |
|---|---|
side_of_road |
Facoltativo. Indica che la posizione di questa tappa deve avere una preferenza per il veicolo per fermarsi su un lato particolare della strada. Quando imposti questo valore, il percorso passerà per la posizione in modo che il veicolo possa fermarsi sul lato della strada verso cui la posizione è orientata dal centro della strada. Questa opzione non funziona per la modalità di viaggio "A PIEDI". |
vehicle_stopover |
Indica che la tappa è destinata ai veicoli per fermarsi, con l'intenzione di prendere o lasciare qualcuno. Questa opzione funziona solo per la modalità di viaggio "DRIVING" e quando "location_type" è "location". Sperimentale: il comportamento o l'esistenza di questo campo potrebbero cambiare in futuro. |
Campo unione location_type. Diversi modi per rappresentare una località. location_type può essere solo uno dei seguenti tipi: |
|
location |
Un punto specificato utilizzando le coordinate geografiche, incluso un orientamento facoltativo. |
place_id |
L'ID luogo POI associato al waypoint. Quando utilizzi un ID luogo per specificare la posizione di arrivo o partenza di una VisitRequest, utilizza un ID luogo sufficientemente specifico per determinare una posizione LatLng per la navigazione verso il luogo. Ad esempio, un ID luogo che rappresenta un edificio è adatto, ma un ID luogo che rappresenta una strada è sconsigliato. |