Unikaj zawracania w miejscach odbioru i dostawy.

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_roadavoid_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 z side_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 samego side_of_road = true.
  • Gdy avoid_u_turns = true dla określonego żądania wizyty, w odpowiedzi ShipmentRoute.Visit pole injected_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 znakowi VisitRequest, to ShipmentRoute.Visit musi zawierać znak injected_solution_location_token zwrócony wcześniej przez solver.ShipmentRoute.Visitavoid_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óży WALKING.
  • 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ń.