默认情况下,车辆可以从任何方向到达取货或送货地点,然后从任何方向离开。在某些情况下,这会迫使车辆在访问位置掉头,但由于车辆尺寸、位置处的交通标志或通常的交通状况,掉头可能很困难或根本无法实现。
为防止车辆在到达指定上车点或送货点后到出发前改变方向,您可以将相应位置的 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。
以下命令会向路线优化 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
搭配使用。在这种情况下,系统会避免掉头,但求解器会选择一条车辆与途经点位于道路同一侧的路线,这与单独设置side_of_road = true
类似。- 如果某个访问请求的
avoid_u_turns = true
为 1,则相应响应中的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
不能用于到达地和出发地不同的取货和送货。- 如果取货或送货地点位于尽头路,则必须掉头才能离开该道路。
- 此功能的目的是避免在上车地点和送达地点掉头。 不会避免航点之间的掉头。
- 急转弯到另一条道路不被视为掉头,系统通常不会避开此类转弯。
此功能在开发期间还存在其他限制。随着该功能的不断完善,我们预计这些限制会逐步解除。
avoid_u_turns
无法与interpret_injected_solutions_using_labels
搭配使用。