Unikaj zawracania w miejscach odbioru i dostawy.

Domyślnie pojazdy mogą dojeżdżać do miejsca odbioru lub dostawy z dowolnego kierunku, a potem odjeżdżać w dowolnym kierunku. W niektórych przypadkach może to zmusić pojazd do zawrócenia w miejscu wizyty, co może być trudne lub niemożliwe z powodu rozmiaru pojazdu, znaków drogowych w miejscu wizyty lub warunków drogowych.

Aby zapobiec zmianie kierunku jazdy pojazdu między przybyciem a odjazdem w przypadku danej lokalizacji odbioru lub dostawy, możesz ustawić wartość avoid_u_turns na „true” (prawda) w przypadku tej lokalizacji. W przypadku tego ustawienia pojazd będzie przyjeżdżał i wyjeżdżał z miejsca docelowego w tym samym kierunku, unikając zawracania. Na drogach dwukierunkowych kalkulator bierze pod uwagę oba kierunki i wybiera jeden z nich w ramach optymalizacji trasy.

Możesz też ustawić parametr side_of_road na wartość true, aby uzyskać trasę, na której pojazd dojeżdża i odjeżdża od punktu docelowego po stronie drogi najbliższej punktowi drogi. W tym przypadku pojazd nie zmienia też kierunku między przybyciem a odjazdem. Aby osiągnąć ten sam wynik, możesz ustawić wartości side_of_roadavoid_u_turns na „PRAWDA”. Więcej informacji znajdziesz w artykule Interakcje z innymi funkcjami.

W praktyce polecenie avoid_u_turns należy stosować, gdy można bezpiecznie przejść przez drogę, aby dotrzeć do punktu orientacyjnego. Użyj side_of_road, gdy przejście nie jest zalecane lub niemożliwe.

Przykład: wysłanie żądania OptimizeTours do usługi avoid_u_turns

Żądania OptimizeTours można wysyłać za pomocą interfejsu REST lub gRPC.

Zanim wyślesz żądanie, zastąp te parametry wartościami odpowiednimi dla Twojego środowiska:

  • Upewnij się, że domyślne dane logowania aplikacji są skonfigurowane zgodnie z opisem w artykule Korzystanie z protokołu OAuth.
  • Ustaw wartość PROJECT_NUMBER_OR_ID na numer lub identyfikator projektu Cloud.

    Poniższe polecenie wysyła żądanie OptimizeTours do interfejsu RouteOptimization API i otrzymuje odpowiedź w sposób synchroniczny.

    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

Po zakończeniu procesu otrzymasz wiadomość z odpowiedzią.

Interakcje z innymi funkcjami

  • avoid_u_turns można używać razem z side_of_road = true. W tym przypadku zawracanie jest wykluczone, ale rozwiązanie wybiera trasę, na której pojazd znajduje się po tej samej stronie drogi co punkt orientacyjny, podobnie jak w przypadku ustawienia side_of_road = true.
  • Jeśli avoid_u_turns = true dla określonego żądania wizyty, to ShipmentRoute.Visit w odpowiedniej odpowiedzi ma ustawione pole injected_solution_location_token. Dokładne znaczenie tej wartości jest szczegółem implementacji, ale koduje informacje o stronie drogi wybranej przez rozwiązanie.
  • Jeśli w ramach żądania wejścia używasz wartości ShipmentRoute.Visit, która odpowiada wartości VisitRequest w której avoid_u_turns = true, to ShipmentRoute.Visit musi zawierać wartość injected_solution_location_token zwróconą wcześniej przez rozwiązanie.ShipmentRoute.Visit

Ograniczenia

Unikanie zawracania jest możliwe w ramach możliwości. W niektórych sytuacjach trasa może 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 trybie podróży WALKING.
  • avoid_u_turns nie można używać do odbioru i dostawy, gdy miejsce przyjazdu i wyjazdu są różne.
  • Jeśli odbiór lub dostawa odbywa się na ulicy bez wylotu, konieczny jest zawracanie, aby opuścić ulicę.
  • Celem tej funkcji jest unikanie zawracania w miejscach odbioru i dostawy. Nie unikaj zawracania między punktami pośrednimi.
  • Bardzo ostre zakręty na inną drogę nie są uważane za zawracanie i zazwyczaj nie są unikane.

Ta funkcja jest w trakcie opracowywania, dlatego obowiązują dodatkowe ograniczenia. Oczekujemy, że zostaną one zniesione w miarę rozwoju tej funkcji.