根據預設,車輛可從任何方向抵達上車/送達地點,然後從任何方向離開。在某些情況下,這會迫使車輛在造訪地點迴轉,但由於車輛大小、地點的交通標誌或一般交通狀況,這可能會很困難或無法執行。
如要避免車輛在抵達和離開指定上車/送貨地點時改變方向,您可以將 avoid_u_turns 設為此地點的 true。在這種設定下,車輛會以相同的方向抵達及離開該地點,因此不會迴轉。在雙向道路上,解算器會考量兩個方向,並選擇其中一個做為路線最佳化。
您也可以將 side_of_road 設為 true,取得車輛抵達和離開時最靠近路線的路徑。在這種情況下,車輛也不會在抵達和離開之間變更方向。您可以將 side_of_road 和 avoid_u_turns 都設為 true,以達到相同的結果。詳情請參閱「與其他功能互動」。
實際上,avoid_u_turns 應在安全通過路口前往路標時使用。不建議或無法穿越時,請使用 side_of_road。
範例:使用 avoid_u_turns 提出 OptimizeTours 要求
您可以使用 REST 或 gRPC 提出 OptimizeTours 要求。
提出要求前,請將下列參數替換為環境適用的值:
- 請確認您已按照「使用 OAuth」一節所述,設定應用程式預設憑證。
將 PROJECT_NUMBER_OR_ID 設為 Cloud 專案編號或 ID。
下列指令會將
OptimizeTours要求傳送至 Route Optimization API,並同步接收回應。curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- <<EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ], } } EOM
要求完成後,您會收到回覆訊息。
與其他功能互動
avoid_u_turns可與side_of_road = true搭配使用。在這種情況下,系統會避免迴轉,但解算器會選取車輛與路標位於同一側的路線,類似於只設定side_of_road = true。- 當
avoid_u_turns = true為特定造訪要求時,對應回應中的ShipmentRoute.Visit就會設有injected_solution_location_token欄位。這個值的確切含義是實作細節,但它會將解算器選擇的道路邊緣資訊編碼。 - 當您使用
ShipmentRoute.Visit做為輸入要求的一部分時,如果該ShipmentRoute.Visit對應至VisitRequest中的avoid_u_turns = true,則ShipmentRoute.Visit必須包含先前由解算器傳回的injected_solution_location_token。
限制
系統會盡力避免迴轉。在某些情況下,路線可能仍會包含迴轉路段:
avoid_u_turns僅適用於支援side_of_road的交通模式。具體來說,系統不支援WALKING的移動模式。avoid_u_turns無法用於抵達和離開地點不同時的接送和送達行程。- 如果在死巷中接送或取件,就必須迴轉才能離開。
- 這項功能的目的是在上車和下車地點避免迴轉。不會避免在路線控點之間迴轉。
- 轉入其他道路的非常急轉彎不視為迴轉,通常不會避免。
這項功能仍在開發階段,因此有其他限制。我們預計隨著這項功能的演進,這些限制將會解除。
avoid_u_turns無法與interpret_injected_solutions_using_labels搭配使用。