יצירה של הודעת בקשה
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
מפתחים באזור הכלכלי האירופי (EEA)
כפי שמתואר בקצרה במאמר סקירה כללית על אופטימיזציה של מסלולים, בקשה בסיסית מורכבת מהישויות הנדרשות Model, Shipments ו-Vehicles:
- המודל מתעד הגדרות ואילוצים של הבקשה כולה, כולל
Shipments
וגם Vehicles
.
- משלוחים מייצגים משימות או משלוחים בפועל שכוללים איסוף ו
VisitRequest
מסירהVisitRequest
. למשלוחים יש הגדרות ומגבלות מקומיות.
- כלי רכב מייצגים כלי רכב, נהגים או אנשי צוות. לכלי רכב יש גם הגדרות ומגבלות מקומיות.
המאפיינים של כל ישות מתארים חלק מבעיית אופטימיזציה ברמת פירוט מסוימת. אילוצים שחלים על כל המודל חלים על כל המשלוחים וכלי הרכב, ואילוצים ומאפיינים שצוינו לגבי משלוחים או כלי רכב ספציפיים חלים רק על משלוח או כלי רכב אחד.
לעיון בתיעוד המלא של כל סוג הודעה, אפשר לעיין במסמכי העזר של ההודעות ShipmentModel
(REST, gRPC), Shipment
(REST, gRPC) ו-Vehicle
(REST, gRPC).
OptimizeToursRequest
מלונות
חלק מהמאפיינים הנפוצים של הודעת OptimizeToursRequest
ברמה העליונה (REST, gRPC) כוללים את המאפיינים הבאים:
-
searchMode
מציין אם להחזיר את הפתרון הראשון שעומד באילוצים שצוינו או למצוא את הפתרון הטוב ביותר האפשרי בתוך מסגרת זמן מוגדרת.
- ההגדרה
considerRoadTraffic
קובעת אם נעשה שימוש בנתוני תנועה בזמן אמת לחישוב מסלולים ולחישוב זמן ההגעה המשוער.
-
populateTransitionPolylines
קובע אם קווי מסלול וטוקנים של מסלולים יוחזרו בתשובה.
מאפייני המודל
אלה כמה מאפיינים נפוצים של הודעת ShipmentModel
(REST, gRPC):
-
globalStartTime
מייצג את שעת ההתחלה המוקדמת ביותר של מסלולים בכל כלי הרכב והמשלוחים. אף רכב לא יכול להתחיל את המעברים והמשלוחים הראשונים שלו לפני השעה הזו.
-
globalEndTime
מייצג את שעת הסיום המאוחרת ביותר של המסלולים בכל כלי הרכב והמשלוחים. כל המשלוחים והמעברים שהוקצו חייבים להסתיים לפני הזמן הזה.
מאפייני המשלוח
אלה כמה מהמאפיינים הנפוצים של הודעת Shipment
(REST, gRPC):
- המאפיינים
pickups[]
ו-deliveries[]
מייצגים את המקום שבו אפשר לאסוף או להפקיד משלוח. שני המאפיינים האלה משתמשים בהודעה VisitRequest
(REST, gRPC).pickups[]
deliveries[]
-
loadDemands
מייצגים את העומס הנדרש כדי שכלי רכב ישלים משלוח. המאפיין המתאים של כלי הרכב load_limits
(REST, gRPC)
מייצג את כמות המטען שכלי הרכב יכול להכיל בכל רגע נתון.
מידע נוסף על עומס זמין מופיע במאמר דרישות ומגבלות לגבי עומס.
-
penalty_cost
מייצג את העלות שנובעת מדילוג על משלוח. מידע נוסף על עלויות זמין במאמר פרמטרים של מודל עלויות.
מאפייני הרכב
אלה כמה מהמאפיינים הנפוצים של הודעת Vehicle
(REST, gRPC):
-
startLocation
מייצג את המקום שבו הרכב צריך להתחיל את המסלול שלו. המאפיין הזה הוא אופציונלי. אם לא מציינים את זה, המסלול של הרכב מתחיל במיקום של המשלוח הראשון שהוקצה לו.
endLocation
מייצג את המקום שבו המסלול של הרכב צריך להסתיים. המאפיין הזה הוא אופציונלי. אם לא מציינים את זה, המסלול של הרכב מסתיים במיקום של המשלוח האחרון שהוקצה לו.
-
startTimeWindows[]
מייצג את הזמן שבו הרכב יכול להתחיל את המסלול שלו. המאפיין הזה הוא אופציונלי.
-
endTimeWindows[]
מייצג את הזמן שבו הרכב יכול להתחיל ולסיים את המסלול שלו.
שני המאפיינים הם אופציונליים.
-
loadLimits
מייצג את קיבולת הרכב שזמינה כדי לעמוד בדרישות העמסה של המשלוחים. מידע נוסף על דרישות עומס ומגבלות זמין במאמר דרישות עומס ומגבלות.
בקשה מלאה לדוגמה בפורמט JSON נראית כך:
{
"model": {
"shipments": [
{
"pickups": [
{
"arrivalLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
}
}
],
"deliveries": [
{
"arrivalLocation": {
"latitude": 37.79581,
"longitude": -122.4218856
}
}
]
}
],
"vehicles": [
{
"startLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"endLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"costPerKilometer": 1.0
}
],
"globalStartTime": "2024-02-13T00:00:00.000Z",
"globalEndTime": "2024-02-14T06:00:00.000Z"
}
}
OptimizeTours
ו-BatchOptimizeTours
צורכים הודעות בקשה כמו בדוגמה שלמעלה, אבל בדרכים שונות. לפני ששולחים בקשה לאופטימיזציה של מסלול, חשוב להבין את ההבדל בין שתי השיטות:
השוואה בין OptimizeTours לבין BatchOptimizeTours
אלא אם צוין אחרת, התוכן של דף זה הוא ברישיון Creative Commons Attribution 4.0 ודוגמאות הקוד הן ברישיון Apache 2.0. לפרטים, ניתן לעיין במדיניות האתר Google Developers. Java הוא סימן מסחרי רשום של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-09-04 (שעון UTC).
[null,null,["עדכון אחרון: 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)"]]