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 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 w przypadku konkretnej wizyty.
  2. Interfejs API uwzględnia oba kierunki ruchu na drogach dwukierunkowych i wybiera optymalną ścieżkę.
  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 typowe warunki drogowe.

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 Jeśli ustawisz wartość true, interfejs API uniemożliwi 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 miejsca odbioru i miejsca 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 dzięki sideOfRoad

Chociaż funkcja sideOfRoad jest odrębną funkcją, jest ściśle powiązana z unikaniem zawracania, ponieważ zapobiega wielu zawracaniom, kierując pojazd na tę stronę drogi, która jest najbliżej 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 parametru 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 ten sposób:

  • Strona drogi: ustawienie zarówno avoidUTurns, jak i sideOfRoad na true nieznacznie zwiększa szansę uniknięcia zawracania podczas wyznaczania trasy do strony drogi najbliższej 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 zapisać, po której stronie drogi został wybrany. 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

Unikanie zawracania jest funkcją działającą zgodnie z zasadą najlepszych starań. Interfejs API może nadal uwzględniać zawracanie na wygenerowanej trasie w tych przypadkach:

  • Ś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.