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

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

如要避免車輛在抵達特定上車或送達地點後改變方向,可以將該地點的 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 = trueShipmentRoute.Visit,則對應回應中的 ShipmentRoute.Visit 會設定 injected_solution_location_token 欄位。這個值的確切意義是實作細節,但會編碼求解器選取的道路側資訊。
  • 在輸入要求中使用 ShipmentRoute.Visit 時,如果該 ShipmentRoute.Visit 對應於 avoid_u_turns = true 中的 VisitRequest,則 ShipmentRoute.Visit 必須包含求解器先前傳回的 injected_solution_location_token

限制

系統會盡可能避免迴轉。在某些情況下,路線仍可能包含迴轉:

  • avoid_u_turns 僅適用於支援 side_of_road 的交通方式。具體來說,這項功能不支援WALKING旅行模式。
  • avoid_u_turns 不適用於抵達和出發地點不同的取貨和送貨服務。
  • 如果取貨或送貨地點位於死巷,你必須迴轉才能離開。
  • 這項功能的目的是避免在取貨和送貨地點迴轉。 系統不會避開路線控點間的迴轉。
  • 如果轉彎角度很大,轉入不同道路,系統不會將其視為迴轉,通常也不會避開。

這項功能仍在開發階段,因此有其他限制。我們預期隨著這項功能不斷演進,這些指標也會隨之提升。