Utwórz wiadomość z żądaniem

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

  • Model rejestruje ustawienia i ograniczenia dotyczące całego żądania, w tym Shipments i Vehicles.
  • Przesyłki reprezentują zadania lub rzeczywiste przesyłki, które obejmują VisitRequest odbiór i dostawę. Przesyłki mają lokalne ustawienia i ograniczenia.
  • Pojazdy to pojazdy, kierowcy i 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 na poziomie modelu mają zastosowanie do wszystkich przesyłek i pojazdów, a ograniczenia i właściwości określone dla przesyłek lub pojazdów dotyczą tylko jednej przesyłki lub pojedynczego pojazdu.

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

OptimzeToursRequest miejsca zakwaterowania

Niektóre często używane właściwości wiadomości OptimizeToursRequest najwyższego poziomu (REST, gRPC) to między innymi:

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

Właściwości modelu

Niektóre często używane właściwości wiadomości ShipmentModel (REST, gRPC) to:

  • globalStartTime reprezentuje najwcześniejszą godzinę rozpoczęcia tras wszystkich pojazdów i dostaw. Żaden pojazd nie może rozpocząć pierwszego przenoszenia ani wysyłki przed tym terminem.
  • globalEndTime pokazuje najpóźniejszą godzinę zakończenia tras wszystkich pojazdów i przesyłek. Wszystkie przypisane przesyłki i przeniesienia muszą zostać ukończone przed tym terminem.

Właściwości dostawy

Niektóre często używane właściwości wiadomości Shipment (REST, gRPC) to między innymi:

  • pickups[] i deliveries[] wskazują, gdzie można odebrać lub dostarczyć przesyłkę. Właściwości pickups[] i deliveries[] używają komunikatu VisitRequest (REST, gRPC).
  • loadDemands oznaczają obciążenie wymagane do zrealizowania wysyłki przez pojazd. Odpowiednia właściwość load_limits pojazdu (REST, gRPC) wskazuje, ile ładunku może obsłużyć jednocześnie pojazd. Więcej informacji o obciążeniu znajdziesz w artykule Żądania i limity obciążenia.
  • penalty_cost oznacza koszty naliczone w przypadku pominięcia wysyłki. Więcej informacji o kosztach znajdziesz w artykule Parametry modelu kosztu.

Właściwości pojazdów

Niektóre często używane właściwości wiadomości Vehicle (REST, gRPC) to między innymi:

  • startLocation wskazuje, dokąd musi rozpocząć się trasa pojazdu. Ta właściwość jest opcjonalna. Jeśli go nie podasz, trasa pojazdu rozpocznie się od lokalizacji pierwszej przypisanej przesyłki.
  • endLocation wskazuje, gdzie pojazd musi zakończyć swoją trasę. Ta właściwość jest opcjonalna. Jeśli go nie podasz, trasa pojazdu zakończy się w lokalizacji ostatniej przypisanej przesyłki.
  • startTimeWindows[] wskazuje, kiedy pojazd może rozpocząć trasę. Ta właściwość jest opcjonalna.
  • endTimeWindows[] wskazuje, kiedy pojazd może rozpoczynać i kończyć trasę. Obie właściwości są opcjonalne.
  • loadLimits przedstawia pojemność pojazdu, która pozwala sprostać zapotrzebowaniu na ładunek. Więcej informacji o zapotrzebowaniach i limitach obciążenia znajdziesz w artykule Żądania i limity obciążenia.

Kompletne 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 funkcje OptimizeTours, jak i BatchOptimizeTours wykorzystują komunikaty żądań, tak jak w przykładzie powyżej, ale na różne sposoby. Przed wysłaniem żądania optymalizacji trasy należy poznać różnice między tymi metodami:

Porównanie OptimizeTours i BatchOptimizeTours