Theo mặc định, xe có thể đến một địa điểm nhận hàng hoặc giao hàng từ bất kỳ hướng nào, rồi rời đi theo hướng bất kỳ. Trong một số trường hợp, điều này buộc xe phải quay đầu tại vị trí ghé thăm, điều này có thể khó khăn hoặc không thể thực hiện được do kích thước xe, biển báo giao thông tại vị trí hoặc điều kiện giao thông thông thường.
Để ngăn xe thay đổi hướng giữa thời gian đến và thời gian khởi hành cho một vị trí nhận hàng hoặc giao hàng nhất định, bạn có thể đặt avoid_u_turns
thành true cho vị trí này. Theo chế độ cài đặt này, xe sẽ đến và rời khỏi vị trí theo cùng một hướng, do đó tránh được việc quay đầu. Trên đường hai chiều, trình giải quyết sẽ xem xét cả hai hướng và chọn một hướng làm một phần của quá trình tối ưu hoá tuyến đường.
Bạn cũng có thể đặt side_of_road
thành true để nhận được một tuyến đường mà xe đến và rời đi ở bên đường gần với điểm tham chiếu nhất. Trong trường hợp này, xe cũng không thay đổi hướng đi giữa điểm đến và điểm khởi hành. Bạn có thể đặt cả side_of_road
và avoid_u_turns
thành true để đạt được kết quả tương tự. Để biết thông tin chi tiết, hãy xem phần Tương tác với các tính năng khác.
Trên thực tế, bạn nên sử dụng avoid_u_turns
khi có thể băng qua đường một cách an toàn để đến điểm tham chiếu. Sử dụng side_of_road
khi không nên hoặc không thể băng qua đường.
Ví dụ: Đưa ra yêu cầu OptimizeTours
bằng avoid_u_turns
Bạn có thể đưa ra yêu cầu OptimizeTours
bằng REST hoặc gRPC.
Trước khi đưa ra yêu cầu, hãy thay thế các tham số sau bằng các giá trị phù hợp với môi trường của bạn:
- Đảm bảo bạn đã định cấu hình Thông tin xác thực mặc định của ứng dụng như mô tả trong phần Sử dụng OAuth.
Đặt PROJECT_NUMBER_OR_ID thành số hoặc mã dự án trên Cloud.
Lệnh sau đây sẽ gửi một yêu cầu
OptimizeTours
đến RouteOptimization API và nhận được phản hồi đồng bộ.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
Sau khi yêu cầu hoàn tất, bạn sẽ nhận được một thông báo phản hồi.
Tương tác với các tính năng khác
- Bạn có thể sử dụng
avoid_u_turns
cùng vớiside_of_road = true
. Trong trường hợp này, hệ thống sẽ tránh các đoạn đường quay đầu, nhưng trình giải quyết sẽ chọn một tuyến đường mà xe đang ở cùng phía đường với điểm tham chiếu, tương tự như việc chỉ đặtside_of_road = true
. - Khi
avoid_u_turns = true
cho một yêu cầu truy cập nhất định, thìShipmentRoute.Visit
trong phản hồi tương ứng sẽ có trườnginjected_solution_location_token
được đặt. Ý nghĩa chính xác của giá trị này là một chi tiết triển khai, nhưng nó mã hoá thông tin về phía đường mà trình giải quyết đã chọn. - Khi bạn sử dụng
ShipmentRoute.Visit
trong yêu cầu đầu vào, nếuShipmentRoute.Visit
đó tương ứng vớiVisitRequest
trong đóavoid_u_turns = true
, thìShipmentRoute.Visit
phải chứainjected_solution_location_token
mà trước đó trình giải đã trả về.
Các điểm hạn chế
Tính năng tránh quay đầu xe hoạt động trong khả năng tốt nhất. Trong một số trường hợp, tuyến đường vẫn có thể chứa các đoạn quay đầu:
avoid_u_turns
chỉ hoạt động với những chế độ di chuyển hỗ trợside_of_road
. Cụ thể, chế độ di chuyểnWALKING
không được hỗ trợ.- Bạn không thể dùng
avoid_u_turns
cho việc đến lấy và giao hàng khi địa điểm đến và đi không giống nhau. - Khi đến lấy hàng hoặc giao hàng trên đường cụt, bạn cần phải quay đầu xe để rời khỏi đường đó.
- Mục đích của tính năng này là tránh quay đầu xe tại các vị trí nhận và giao hàng. Không tránh các đoạn đường quay đầu giữa các điểm tham chiếu.
- Những đoạn rẽ rất gấp sang một đường khác không được coi là đường vòng và thường sẽ không bị tránh.
Tính năng này vẫn đang trong quá trình phát triển nên có thêm một số hạn chế. Chúng tôi hy vọng những hạn chế này sẽ được gỡ bỏ khi tính năng này phát triển.
- Bạn không thể sử dụng
avoid_u_turns
cùng vớiinterpret_injected_solutions_using_labels
.