Unikanie zawracania

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

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

Unikanie zawracania działa w ten sposób:

  1. Właściwość unikania zawracania ustawiasz podczas konkretnej wizyty.
  2. Interfejs API uwzględnia oba kierunki ruchu 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 musieć przejść na drugą stronę drogi, 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 warunki na drodze.

Właściwości

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

Właściwość Typ Opis
avoidUTurns Wartość logiczna Gdy wartość tego parametru to true, interfejs API uniemożliwia pojazdowi zawrócenie w tej lokalizacji. Pojazd przyjedzie i odjedzie w tym samym kierunku.

Przykłady

Ta sekcja zawiera 2 rodzaje przykładów:

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

Przykładowe fragmenty 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 żądanie optimizeTours, które uwzględnia unikanie zawracania. Prośba zawiera te elementy:

  • Dostawa z odbiorem i dostarczeniem w obiekcie model.
  • Właściwość avoidUTurns ustawiona na true w przypadku lokalizacji odbioru i dostawy, aby zapobiec zmianie kierunku jazdy pojazdu na tych przystankach.
  {
    "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
        }
      ]
    }
  }

Unikaj zawracania za pomocą sideOfRoad

sideOfRoad to osobna funkcja, ale jest ściśle powiązana z unikaniem zawracania, ponieważ zapobiega wielu zwrotom o 180 stopni, kierując pojazd na stronę drogi najbliższą miejsca docelowego. Wymusza to dojazd pojazdu do miejsca wizyty z określonego kierunku, co eliminuje konieczność zawracania.

W praktyce należy unikać zawracania, gdy bezpiecznie jest przejść przez drogę pieszo, aby dotrzeć do miejsca wizyty. Jeśli przejście przez drogę jest odradzane lub niemożliwe, rozważ ustawienie wartości sideOfRoad na true.

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

Interakcje z innymi funkcjami

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

  • Pobocze: ustawienie zarówno avoidUTurns, jak i sideOfRoad na true nieznacznie zwiększa szansę na uniknięcie zawracania podczas wyznaczania trasy do pobocza najbliższego miejsca wizyty. Wprowadza to jednak dodatkowe komplikacje związane z ograniczeniami dotyczącymi unikania zawracania. W przypadku większości lokalizacji wizyt wystarczy ustawić tylko jedną z tych właściwości, aby uniknąć zawracania.
  • Wstrzykiwane rozwiązania: gdy używasz unikania zawracania, odpowiedź interfejsu API zawiera element injectedSolutionLocationToken w wygenerowanym elemencie ShipmentRoute.Visit, aby rejestrować, którą stronę drogi wybrano. Jeśli w przyszłości użyjesz tej wizyty jako wstrzykniętego rozwiązania w kolejnym żądaniu, musisz przekazać ten token z powrotem do interfejsu API.

Ograniczenia

Funkcja unikania zawracania jest dostępna w ramach zasady najlepszych starań. Interfejs API może nadal uwzględniać zawracanie na wygenerowanej trasie w tych sytuacjach:

  • Środek transportu jest ustawiony na inny niż DRIVING.
  • Lokalizacje przyjazdu i odjazdu w przypadku konkretnej lokalizacji wizyty są różne. W takim przypadku interfejs API zwraca błąd.
  • Wizyta odbywa się na drodze bez przejazdu, co wymaga zawrócenia, aby z niej wyjechać.
  • Zawracanie następuje na trasie, a nie w miejscu wizyty.
  • Jest to bardzo ostry skręt na inną drogę, który interfejs API nie klasyfikuje jako zawracanie.