Unikanie zawracania

Unikanie zawracania jest dostępne w obiekcie `ShipmentModel.Shipment` w przypadku odbiorów i dostaw.

Unikanie zawracania to funkcja optymalizacji trasy, która uniemożliwia pojazdom zawracanie w określonym miejscu odbioru lub dostawy podczas wizyty. Ustawiając unikanie zawracania, określasz, że pojazd powinien być skierowany w tym samym kierunku, gdy przyjeżdża do miejsca wizyty i gdy je opuszcza.

Unikanie zawracania działa w ten sposób:

  1. Ustawiasz właściwość unikania zawracania w przypadku konkretnej wizyty.
  2. Interfejs API uwzględnia oba kierunki jazdy na drogach dwukierunkowych i wybiera optymalną trasę.
  3. Interfejs API generuje trasę, na której pojazd przyjeżdża i odjeżdża bez zawracania w miejscu wizyty. Kierowca może być zmuszony do przejechania przez drogę, aby dotrzeć do tego miejsca.

Ta właściwość jest idealna w sytuacjach, gdy zawracanie jest trudne lub niemożliwe ze względu na rozmiar pojazdu, znaki drogowe lub ruch taki jak zwykle.

Właściwości

Właściwość unikania zawracania jest zdefiniowana w obiekcie VisitRequest. Ten obiekt jest używany w tablicach pickups i deliveries przesyłki.

Właściwość Typ Opis
avoidUTurns Wartość logiczna Gdy ta właściwość jest ustawiona na true, interfejs API uniemożliwia pojazdowi zawracanie w tym miejscu wizyty. Pojazd przyjedzie i odjedzie w tym samym kierunku.

Przykłady

W tej sekcji znajdziesz 2 rodzaje przykładów:

  • Przykłady kodu, które ilustrują strukturę unikania zawracania.
  • Przykładowe żądanie, które zawiera tę funkcję.

Przykłady kodu

Poniższy przykład pokazuje strukturę avoidUTurns w przypadku odbioru i dostawy:

"pickups":[
  {
    "arrivalLocation": {
      "latitude": 37.42506261000996,
      "longitude": -122.09535511930135
    },
    "avoidUTurns": true
  }
],
"deliveries":[
  {
    "arrivalLocation": {
      "latitude": 37.42421503206021,
      "longitude": -122.09526063135228
    },
    "avoidUTurns": true
  }
]

Przykładowe żądanie

Poniższy przykład pokazuje podstawowe optimizeTours żądanie, które obejmuje unikanie zawracania. To żądanie zawiera te elementy:

  • Przesyłka z odbiorem i dostawą w obiekcie model.
  • Właściwość avoidUTurns ustawiona na true w miejscach odbioru i dostawy, aby uniemożliwić pojazdowi zmianę kierunku w tych miejscach.
  {
    "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
        }
      ]
    }
  }

Unikanie zawracania za pomocą sideOfRoad

Chociaż sideOfRoad to osobna funkcja, jest ona ściśle powiązana z unikaniem zawracania , ponieważ zapobiega wielu zawracaniom, kierując pojazd na stronę drogi najbliższą miejsca docelowego. Zmusza to pojazd do zbliżania się do miejsca wizyty z określonego kierunku, co eliminuje konieczność zawracania.

W praktyce należy używać unikania zawracania, gdy bezpiecznie można przejść przez drogę, aby dotrzeć do miejsca wizyty. Jeśli przechodzenie przez drogę jest odradzane lub niemożliwe, rozważ ustawienie sideOfRoad na true zamiast.

Właściwość sideOfRoad jest zdefiniowana w obiekcie Waypoint.

Interakcja z innymi funkcjami

Unikanie zawracania współdziała z innymi funkcjami wyznaczania tras w następujący sposób:

  • Strona drogi: ustawienie zarówno avoidUTurns, jak i sideOfRoad na true nieznacznie zwiększa szanse na uniknięcie zawracania podczas kierowania pojazdu na stronę drogi najbliższą miejsca wizyty. Wprowadza to jednak dodatkowe komplikacje związane z ograniczeniami unikania zawracania. W przypadku większości miejsc wizyt wystarczy ustawić tylko jedną z tych właściwości, aby uniknąć zawracania.
  • Wstrzyknięte rozwiązania: gdy używasz unikania zawracania, odpowiedź interfejsu API zawiera injectedSolutionLocationToken w wygenerowanym ShipmentRoute.Visit, aby zapisać, którą stronę drogi wybrano. Jeśli kiedykolwiek użyjesz tej wizyty jako wstrzykniętego rozwiązania w przyszłym żądaniu, musisz przekazać ten token z powrotem do interfejsu API.

Ograniczenia

Unikanie zawracania to funkcja, która działa najlepiej, jak to możliwe. Interfejs API może nadal uwzględniać zawracanie w wygenerowanej trasie w tych przypadkach:

  • Tryb podróży jest ustawiony na inny tryb niż DRIVING.
  • Miejsca przyjazdu i odjazdu w przypadku konkretnego miejsca wizyty są różne. W takim przypadku interfejs API zwraca błąd.
  • Wizyta znajduje się na drodze bez przejazdu, co wymaga zawrócenia, aby z niej wyjechać.
  • Zawracanie następuje na trasie, a nie w rzeczywistym miejscu wizyty.
  • Manewr to bardzo ostry skręt na inną drogę, którego interfejs API nie klasyfikuje jako zawracania.