Domyślnie pojazdy mogą przyjeżdżać do miejsca odbioru lub dostawy z dowolnego kierunku, a następnie odjeżdżać w dowolnym kierunku. W niektórych przypadkach zmusza to pojazd do zawrócenia w miejscu wizyty, co może być trudne lub niemożliwe ze względu na rozmiar pojazdu, znaki drogowe w danym miejscu lub typowe warunki ruchu.
Aby zapobiec zmianie kierunku jazdy pojazdów między przyjazdem a odjazdem w przypadku danej lokalizacji odbioru lub dostawy, możesz ustawić wartość avoid_u_turns
na „true” dla tej lokalizacji. W tym ustawieniu pojazd przyjedzie i odjedzie z lokalizacji w tym samym kierunku, dzięki czemu nie będzie musiał zawracać. W przypadku dróg dwukierunkowych
rozwiązanie uwzględni oba kierunki i wybierze jeden z nich w ramach optymalizacji trasy.
Możesz też ustawić wartość side_of_road
na true, aby uzyskać trasę, na której pojazd przyjeżdża i odjeżdża po stronie drogi najbliższej punktu pośredniego. W tym przypadku pojazd nie zmienia też kierunku między przyjazdem a odjazdem. Aby osiągnąć ten sam rezultat, możesz ustawić wartość „true” w polach side_of_road
i avoid_u_turns
. Więcej informacji znajdziesz w artykule Współdziałanie z innymi funkcjami.
W praktyce symbolu avoid_u_turns
należy używać, gdy bezpiecznie jest przejść przez drogę, aby dotrzeć do punktu. Używaj ikony side_of_road
, gdy przejście jest odradzane lub niemożliwe.
Przykład: wysyłanie żądania OptimizeTours
za pomocą avoid_u_turns
Żądania OptimizeTours
można przesyłać za pomocą REST lub gRPC.
Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:
- Upewnij się, że masz skonfigurowane domyślne dane logowania aplikacji zgodnie z opisem w artykule Korzystanie z OAuth.
Ustaw PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.
To polecenie wysyła żądanie
OptimizeTours
do interfejsu Route Optimization API i synchronicznie odbiera odpowiedź.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
Gdy prośba zostanie zrealizowana, otrzymasz wiadomość z odpowiedzią.
Interakcje z innymi funkcjami
avoid_u_turns
można używać razem zside_of_road = true
. W tym przypadku unika się zawracania, ale rozwiązanie wybiera trasę, na której pojazd znajduje się po tej samej stronie drogi co punkt pośredni, podobnie jak w przypadku ustawienia tylkoside_of_road = true
.- Gdy
avoid_u_turns = true
w przypadku określonego żądania wizyty, wówczas w odpowiedniej odpowiedziShipmentRoute.Visit
poleinjected_solution_location_token
jest ustawione. Dokładne znaczenie tej wartości jest szczegółem implementacji, ale zawiera informacje o stronie drogi wybranej przez rozwiązanie. - Jeśli w ramach żądania wejściowego używasz znaku
ShipmentRoute.Visit
, a odpowiada on znakowiVisitRequest
, w którymavoid_u_turns = true
, toShipmentRoute.Visit
musi zawierać znakinjected_solution_location_token
zwrócony wcześniej przez solver.ShipmentRoute.Visit
Ograniczenia
Unikanie zawracania jest realizowane w miarę możliwości. W niektórych sytuacjach trasa może nadal zawierać zawracanie:
avoid_u_turns
działa tylko w przypadku trybów podróży, które obsługująside_of_road
. W szczególności nie jest on obsługiwany w przypadku trybu podróżyWALKING
.avoid_u_turns
nie można używać w przypadku odbiorów i dostaw, w których miejsce przyjazdu i odjazdu nie jest takie samo.- Gdy miejsce odbioru lub dostawy znajduje się na drodze bez przejazdu, aby z niej wyjechać, należy zawrócić.
- Celem tej funkcji jest unikanie zawracania w miejscach odbioru i dostawy. Zawracanie między punktami nie jest unikane.
- Bardzo ostre skręty w inną drogę nie są uznawane za zawracanie i zwykle nie są omijane.
Podczas opracowywania tej funkcji obowiązują dodatkowe ograniczenia. Wraz z rozwojem tej funkcji spodziewamy się zniesienia tych ograniczeń.
- Nie można używać
avoid_u_turns
razem zinterpret_injected_solutions_using_labels
.