避免在上車和交貨地點使用迴轉

根據預設,車輛可從任何方向抵達上車/送達地點,然後從任何方向離開。在某些情況下,這會迫使車輛在造訪地點迴轉,但由於車輛大小、地點的交通標誌或一般交通狀況,這可能會很困難或無法執行。

如要避免車輛在抵達和離開指定上車/送貨地點時改變方向,您可以將 avoid_u_turns 設為此地點的 true。在這種設定下,車輛會以相同的方向抵達及離開該地點,因此不會迴轉。在雙向道路上,解算器會考量兩個方向,並選擇其中一個做為路線最佳化。

您也可以將 side_of_road 設為 true,取得車輛抵達和離開時最靠近路線的路徑。在這種情況下,車輛也不會在抵達和離開之間變更方向。您可以將 side_of_roadavoid_u_turns 都設為 true,以達到相同的結果。詳情請參閱「與其他功能互動」。

實際上,avoid_u_turns 應在安全通過路口前往路標時使用。不建議或無法穿越時,請使用 side_of_road

範例:使用 avoid_u_turns 提出 OptimizeTours 要求

您可以使用 RESTgRPC 提出 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 無法用於抵達和離開地點不同時的接送和送達行程。
  • 如果在死巷中接送或取件,就必須迴轉才能離開。
  • 這項功能的目的是在上車和下車地點避免迴轉。不會避免在路線控點之間迴轉。
  • 轉入其他道路的非常急轉彎不視為迴轉,通常不會避免。

這項功能仍在開發階段,因此有其他限制。我們預計隨著這項功能的演進,這些限制將會解除。