Utwórz wiadomość z żądaniem

Jak opisano pokrótce w sekcji Omówienie optymalizacji trasy, podstawowe żądanie składa się z elementów wymaganych przez Model, Przesyłki i Pojazdy:

  • Model przechwytuje ustawienia i ograniczenia dla całego żądania, włącznie z Shipments i Vehicles.
  • Przesyłki reprezentują zadania lub rzeczywiste przesyłki, w tym opcje odbioru i dostawy VisitRequest. Przesyłki mają lokalne ustawienia i ograniczenia.
  • Pojazdy to pojazdy, kierowcy lub personel. Pojazdy mają też lokalne ustawienia i ograniczenia.

Właściwości każdego elementu opisują część problemu optymalizacji na określonym poziomie szczegółowości. Ograniczenia dotyczące całego modelu mają zastosowanie do wszystkich statków i pojazdów, a ograniczenia i właściwości określone na podstawie dostaw lub pojazdów – odnoszą się tylko do jednej przesyłki lub pojazdu.

Pełną dokumentację poszczególnych typów wiadomości znajdziesz w dokumentacji referencyjnej dotyczącej komunikatów ShipmentModel (REST, gRPC), Shipment (REST, gRPC) oraz Vehicle (REST, gRPC).

OptimizeToursRequest miejsca zakwaterowania

Do często używanych właściwości komunikatu OptimizeToursRequest najwyższego poziomu (REST, gRPC) należą:

  • searchMode wskazuje, czy zwrócić pierwsze rozwiązanie, które spełnia określone ograniczenia, czy znaleźć najlepsze możliwe rozwiązanie w wyznaczonym terminie.
  • considerRoadTraffic określa, czy aktualny ruch jest używany do wyznaczania tras i szacowania szacowanego czasu dotarcia na miejsce.
  • populateTransitionPolylines określa, czy w odpowiedzi są zwracane linie łamane trasy.

Właściwości modelu

Do często używanych właściwości komunikatu ShipmentModel (REST, gRPC) należą:

  • globalStartTime to najwcześniejszy czas rozpoczęcia trasy dla wszystkich pojazdów i ładunków. Żaden pojazd nie może rozpocząć pierwszego przenoszenia ani wysyłek przed tym terminem.
  • globalEndTime przedstawia najnowszy czas zakończenia tras dla wszystkich pojazdów i ładunków. Wszystkie przypisane przesyłki i przeniesienia muszą zostać ukończone przed tym terminem.

Właściwości dostawy

Do często używanych właściwości komunikatu Shipment (REST, gRPC) należą:

  • pickups[] i deliveries[] wskazują, gdzie można odebrać lub dostarczyć przesyłkę. Usługi pickups[] i deliveries[] używają komunikatu VisitRequest (REST, gRPC).
  • loadDemands określa obciążenie wymagane do dostarczenia przesyłki przez pojazd. Odpowiednia właściwość load_limits (REST, gRPC) pojazdu wskazuje, jaki obciążenie może obsłużyć pojazd w danym momencie. Więcej informacji o obciążeniu znajdziesz w artykule Wymagania i limity obciążenia.
  • penalty_cost to koszt naliczany w przypadku pominięcia dostawy. Więcej informacji o kosztach znajdziesz w artykule Parametry modelu kosztu.

Właściwości pojazdu

Do często używanych właściwości komunikatu Vehicle (REST, gRPC) należą:

  • startLocation wskazuje miejsce, do którego pojazd musi rozpocząć trasę. Ta właściwość jest opcjonalna. Jeśli nie podasz tej nazwy, trasa pojazdu zacznie się w miejscu, w którym została przypisana pierwsza przesyłka.
  • endLocation wskazuje miejsce, do którego pojazd musi zakończyć trasę. Ta właściwość jest opcjonalna. Jeśli nie podasz żadnej wartości, trasa pojazdu zakończy się w miejscu ostatniej przypisanej przesyłki.
  • startTimeWindows[] wskazuje, kiedy pojazd może rozpocząć trasę. Ta właściwość jest opcjonalna.
  • endTimeWindows[] wskazuje, kiedy pojazd może rozpocząć i zakończyć trasę. Obie właściwości są opcjonalne.
  • loadLimits reprezentuje pojemność pojazdu dostępną na potrzeby zaspokojenia obciążenia dostaw. Więcej informacji o wymaganiach i limitach obciążenia znajdziesz w artykule Wymagania i limity obciążenia.

Pełne przykładowe żądanie w formacie JSON wygląda tak:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Zarówno OptimizeTours, jak i BatchOptimizeTours korzystają z wiadomości z żądaniami jak w przykładzie powyżej, ale na różne sposoby. Przed wysłaniem żądania optymalizacji trasy ważne jest, by poznać różnice między tymi metodami:

Porównanie OptimizeTours i BatchOptimizeTours