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 zwykłe 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. 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 algorytm 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 symbol avoid_u_turns
powinien być używany, 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ą interfejsu 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 algorytm wybiera trasę, na której pojazd znajduje się po tej samej stronie drogi co punkt pośredni, podobnie jak w przypadku ustawienia samegoside_of_road = true
.- Gdy
avoid_u_turns = true
dla określonego żądania wizyty, w 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
, który odpowiada znakowiVisitRequest
, toShipmentRoute.Visit
musi zawierać znakinjected_solution_location_token
zwrócony wcześniej przez solver.ShipmentRoute.Visit
avoid_u_turns = true
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ć usługi
avoid_u_turns
razem z usługąinterpret_injected_solutions_using_labels
.