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
iVehicles
. - 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[]
ideliveries[]
wskazują, gdzie można odebrać lub dostarczyć przesyłkę. Właściwościpickups[]
ideliveries[]
używają komunikatuVisitRequest
(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: