避免在自提点和送货点 U 转

默认情况下,车辆可以从任何方向到达上车点或下车点,然后从任何方向离开。在某些情况下,这会迫使车辆在访问地点 U 形转弯,但由于车辆尺寸、地点的交通标志或常规交通状况,这可能很难或根本不可能。

如需防止车辆在上车点或下车点到达和离开之间改变方向,您可以为此位置将 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。

    以下命令会向路线优化 API 发送 OptimizeTours 请求,并同步接收响应。

    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 搭配使用。在这种情况下,系统会避免 U 形转弯,但求解器会选择一条车辆与航点位于同一侧道路的路线,类似于仅设置 side_of_road = true
  • 对于某个访问请求,如果 avoid_u_turns = true,则相应响应中的 ShipmentRoute.Visit 会设置 injected_solution_location_token 字段。其值的确切含义是一个实现细节,但它会编码解算器选择的道路侧的信息。
  • 在输入请求中使用 ShipmentRoute.Visit 时,如果该 ShipmentRoute.Visit 对应于 avoid_u_turns = true 中的 VisitRequest,则 ShipmentRoute.Visit 必须包含求解器之前返回的 injected_solution_location_token

限制

系统会尽力避开 U 型转弯。在某些情况下,路线可能仍包含 U 形转弯:

  • avoid_u_turns 仅适用于支持 side_of_road 的出行方式。具体而言,WALKING 出行模式不支持此功能。
  • avoid_u_turns 不能用于到达时间和离开时间不同的上门取件和送货服务。
  • 如果上门取件或送货地点位于死胡同,则必须掉头才能离开该道路。
  • 此功能旨在避免在上车点和下车点进行 U 形转弯。 系统不会避开航点之间的 U 形转弯。
  • 转到其他道路的急转弯不被视为 U 型转弯,通常不会避开。

此功能在开发期间还存在其他限制。随着该功能的不断完善,我们预计会逐步解除这些限制。