Model acquisisce le impostazioni e i vincoli per l'intera richiesta,
inclusi sia Shipments che Vehicles.
Le spedizioni rappresentano attività o spedizioni effettive che includono il ritiro e la
consegna VisitRequest. Le spedizioni hanno impostazioni e vincoli locali.
I veicoli rappresentano veicoli, conducenti o personale. I veicoli hanno anche
impostazioni e vincoli locali.
Le proprietà di ogni entità descrivono parte di un problema di ottimizzazione a un
particolare livello di granularità. I vincoli a livello di modello vengono applicati a tutte
le spedizioni e i veicoli, mentre i vincoli e le proprietà specificati per le spedizioni
o i veicoli sono specifici per una singola spedizione o un singolo veicolo.
Per la documentazione completa su ogni tipo di messaggio, consulta la documentazione di riferimento
per i messaggi ShipmentModel (REST, gRPC), Shipment (REST, gRPC)
e Vehicle (REST, gRPC).
OptimizeToursRequest strutture
Alcune proprietà di uso comune del messaggio OptimizeToursRequest di primo livello
(REST, gRPC) includono quanto segue:
searchMode indica se restituire la prima soluzione che soddisfa i vincoli specificati o trovare la migliore soluzione possibile entro una scadenza prestabilita.
considerRoadTraffic determina se il traffico in tempo reale viene utilizzato
per il calcolo del percorso e della stima dell'orario di arrivo.
populateTransitionPolylines determina se le polilinee del percorso e i token del percorso vengono restituiti nella risposta.
Proprietà del modello
Alcune proprietà comunemente utilizzate del messaggio ShipmentModel (REST,
gRPC) includono:
globalStartTime rappresenta l'ora di inizio più anticipata dei percorsi per tutti i
veicoli e le spedizioni. Nessun veicolo può iniziare le prime transizioni e
spedizioni prima di questo orario.
globalEndTime rappresenta l'ora di fine più recente dei percorsi di tutti i veicoli
e delle spedizioni. Tutte le spedizioni e le transizioni assegnate devono essere completate
prima di questo orario.
Proprietà della spedizione
Alcune proprietà comunemente utilizzate del messaggio Shipment (REST, gRPC) includono:
pickups[] e deliveries[] rappresentano i luoghi in cui è possibile ritirare
o consegnare una spedizione. Le proprietà pickups[] e deliveries[] utilizzano entrambe il messaggio
VisitRequest (REST, gRPC).
loadDemands rappresenta il carico necessario a un veicolo per completare una spedizione. La proprietà load_limits (REST, gRPC) dei veicoli
rappresenta la quantità di carico che un veicolo può ospitare contemporaneamente.
Scopri di più sul carico in Richieste e limiti di carico.
penalty_cost rappresenta il costo sostenuto se una spedizione viene saltata. Scopri
di più sui costi in Parametri del modello di costi.
Proprietà del veicolo
Alcune proprietà comunemente utilizzate del messaggio Vehicle (REST, gRPC) includono:
startLocation indica il punto in cui un veicolo deve iniziare il percorso. Questa
proprietà è facoltativa. Se non specificato, il percorso del veicolo inizia dalla
posizione della prima spedizione assegnata.
endLocation rappresenta il punto in cui un veicolo deve terminare il percorso. Questa proprietà
è facoltativa. Se non specificato, il percorso del veicolo termina nella posizione dell'ultima spedizione assegnata.
startTimeWindows[] indica quando un veicolo può iniziare il suo percorso. Questa
proprietà è facoltativa.
endTimeWindows[] indica quando un veicolo può iniziare e terminare il percorso.
Entrambe le proprietà sono facoltative.
loadLimits rappresentano la capacità del veicolo disponibile per soddisfare le richieste di carico delle spedizioni. Scopri di più su richieste e limiti di carico in Richieste e limiti di carico.
Una richiesta di esempio completa in formato JSON ha il seguente aspetto:
OptimizeTours e BatchOptimizeTours utilizzano entrambi i messaggi di richiesta come
l'esempio precedente, ma in modi diversi. Prima di effettuare una richiesta di ottimizzazione del percorso, è importante comprendere la differenza tra i due metodi:
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 2025-09-04 UTC."],[[["\u003cp\u003eRoute Optimization requests require defining a \u003ccode\u003eModel\u003c/code\u003e with \u003ccode\u003eShipments\u003c/code\u003e and \u003ccode\u003eVehicles\u003c/code\u003e to represent the optimization problem.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eModel\u003c/code\u003e sets global parameters, while \u003ccode\u003eShipments\u003c/code\u003e and \u003ccode\u003eVehicles\u003c/code\u003e have individual properties and constraints for pickups, deliveries, loads, and time windows.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeToursRequest\u003c/code\u003e allows controlling the search mode, traffic considerations, and response details.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eOptimizeTours\u003c/code\u003e and \u003ccode\u003eBatchOptimizeTours\u003c/code\u003e offer synchronous and asynchronous request processing, respectively, with key differences in handling large or complex scenarios.\u003c/p\u003e\n"],["\u003cp\u003eYou can specify global start and end times for all vehicles and shipments within the \u003ccode\u003eShipmentModel\u003c/code\u003e.\u003c/p\u003e\n"]]],[],null,["# Construct a request message\n\n**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\nAs briefly described in [Route Optimization Overview](/maps/documentation/route-optimization/overview), a basic request\nconsists of **Model** , **Shipments** , and **Vehicles** as required entities:\n\n- **Model** captures settings and constraints for the entire request, inclusive of both `Shipments` and `Vehicles`.\n- **Shipments** represent tasks or actual shipments that include pickup and delivery `VisitRequest`s. Shipments have local settings and constraints.\n- **Vehicles** represent vehicles, drivers, or personnel. Vehicles also have local settings and constraints.\n\nEach entity's properties describe part of an optimization problem at a\nparticular level of granularity. Model-wide constraints are applied to all\nshipments and vehicles, while constraints and properties specified on shipments\nor vehicles are specific to a single shipment or vehicle.\n\nFor complete documentation on each message type, see the reference documentation\nfor `ShipmentModel` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.ShipmentModel)), `Shipment` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Shipment), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Shipment)),\nand `Vehicle` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Vehicle), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Vehicle)) messages.\n\n`OptimizeToursRequest` properties\n---------------------------------\n\nSome commonly used properties of the top-level `OptimizeToursRequest` message\n([REST](/maps/documentation/route-optimization/reference/rest/v1/projects/optimizeTours), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.OptimizeToursRequest)) include the following:\n\n- `searchMode` indicates whether to return the first solution that satisfies specified constraints or find the best possible solution within a set deadline.\n- `considerRoadTraffic` determines whether or not live traffic is used for routing and ETA estimation.\n- `populateTransitionPolylines` determines whether or not route polylines and route tokens are returned in the response.\n\nModel properties\n----------------\n\nSome commonly used properties of the `ShipmentModel` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel),\n[gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.ShipmentModel)) include:\n\n- `globalStartTime` represents the earliest start time of routes across all vehicles and shipments. No vehicle may start its first transitions and shipments before this time.\n- `globalEndTime` represents the latest end time of routes across all vehicles and shipments. All assigned shipments and transitions must be complete before this time.\n\nShipment properties\n-------------------\n\nSome commonly used properties of the `Shipment` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Shipment), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Shipment))\ninclude:\n\n- `pickups[]` and `deliveries[]` represent where a shipment can be picked up or dropped off. `pickups[]` and `deliveries[]` properties both use the `VisitRequest` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#VisitRequest), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Shipment.VisitRequest)).\n- `loadDemands` represent the load required for a vehicle to complete a shipment. Vehicles' corresponding `load_limits` ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Vehicle.FIELDS.load_limits), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Vehicle.FIELDS.repeated.google.maps.routeoptimization.v1.Vehicle.LoadLimitsEntry.google.maps.routeoptimization.v1.Vehicle.load_limits)) property represents how much load a vehicle can accommodate at one time. Read more about load in [Load Demands and Limits](/maps/documentation/route-optimization/load-demands-limits).\n- `penalty_cost` represents the cost incurred if a shipment is skipped. Read more on costs in [Cost Model Parameters](/maps/documentation/route-optimization/cost-model).\n\nVehicle properties\n------------------\n\nSome commonly used properties of the `Vehicle` message ([REST](/maps/documentation/route-optimization/reference/rest/v1/ShipmentModel#Vehicle), [gRPC](/maps/documentation/route-optimization/reference/rpc/google.maps.routeoptimization.v1#google.maps.routeoptimization.v1.Vehicle))\ninclude:\n\n- `startLocation` represents where a vehicle must start its route. This property is optional. If not specified, the vehicle's route starts at the location of its first assigned shipment.\n- `endLocation` represents where a vehicle must end its route. This property is optional. If not specified, the vehicle's route ends at the location of its last assigned shipment.\n- `startTimeWindows[]` represents when a vehicle can start its route. This property is optional.\n- `endTimeWindows[]` represents when a vehicle can start and end its route. Both properties are optional.\n- `loadLimits` represent the vehicle's capacity available to meet shipments' load demands. Read more about load demands and limits in [Load Demands and\n Limits](/maps/documentation/route-optimization/load-demands-limits).\n\nA complete example request in JSON format looks like: \n\n {\n \"model\": {\n \"shipments\": [\n {\n \"pickups\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n }\n }\n ],\n \"deliveries\": [\n {\n \"arrivalLocation\": {\n \"latitude\": 37.79581,\n \"longitude\": -122.4218856\n }\n }\n ]\n }\n ],\n \"vehicles\": [\n {\n \"startLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"endLocation\": {\n \"latitude\": 37.73881799999999,\n \"longitude\": -122.4161\n },\n \"costPerKilometer\": 1.0\n }\n ],\n \"globalStartTime\": \"2024-02-13T00:00:00.000Z\",\n \"globalEndTime\": \"2024-02-14T06:00:00.000Z\"\n }\n }\n\n`OptimizeTours` and `BatchOptimizeTours` both consume request messages like the\nexample above, but in different ways. Before making a Route Optimization\nrequest, it's important to understand the difference between the two methods:\n\n[Comparing OptimizeTours and BatchOptimizeTours](/maps/documentation/route-optimization/sync-vs-async)"]]