默认情况下,车辆可以从任何方向到达上车点或下车点,然后从任何方向离开。在某些情况下,这会迫使车辆在访问地点 U 形转弯,但由于车辆尺寸、地点的交通标志或常规交通状况,这可能很难或根本不可能。
如需防止车辆在上车点或下车点到达和离开之间改变方向,您可以为此位置将 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
搭配使用。在这种情况下,系统会避免 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 型转弯,通常不会避开。
此功能在开发期间还存在其他限制。随着该功能的不断完善,我们预计会逐步解除这些限制。
avoid_u_turns
不能与interpret_injected_solutions_using_labels
搭配使用。