Interfejs Route Optimization API zwraca trasy dla pojazdów w odpowiednich użytkownika. Przesyłki są przypisane do pojazdów lub mogą zostać pominięte w zależności od we właściwościach żądania.
Komunikat OptimizeToursResponse
(REST, gRPC) ma 2 główne
właściwości:
routes[]
to trasy dla każdego pojazdu z przypisanymi przesyłkami. KażdyRoute
zawiera dane odzwierciedlające właściwości danej trasy.metrics
to zagregowane wskaźniki dotyczące całej odpowiedzi, obejmujące wszystkie pojazdów i planów tras. Dane najwyższego poziomu zawierają te same właściwości co wskaźników dla poszczególnych tras z wartościami zagregowanymi dla wszystkich tras.
Niektóre właściwości mogą nie być zawsze wypełniane w zależności od wyników optymalizacji:
skippedShipments[]
zawiera listę przesyłek, które nie są realizowane przez żaden pojazd. Przesyłkę można pominąć, jeśli nie można jej zrealizować w ramach określonych ograniczeń lub jeśli koszt jej realizacji przekracza koszt kary. Jeśli na przykład informacje o odbioru lub dostawie są bardzo wąskietimeWindow
, może nie być możliwe lub ekonomiczne udostępnienie pojazdu dokonanie wizyty w wymaganym przedziale czasu.- Wartość
validationErrors[]
określa błędy, które powodują, że żądanie jest nieprawidłowe lub niemożliwe do rozwiązania, gdy parametrsolvingMode
ma wartośćVALIDATE_ONLY
. W normalnym trybieDEFAULT_SOLVE
błędy weryfikacji będą się pojawiać w komunikacie o błędzie, a nie w treści odpowiedzi. Pamiętaj, że Tryb rozwiązywania zadańVALIDATE_ONLY
może zgłosić wiele błędów jednocześnie, co oznacza przydatne do szybkiego debugowania żądań.
Właściwości trasy
Każdy wpis routes[]
to komunikat ShipmentRoute
(REST, gRPC). Każdy
ShipmentRoute
przedstawia przypisanie trasy dla konkretnego pojazdu z:
do danej prośby. Ważne właściwości ShipmentRoute
powiązane z powiązanymi z nimi właściwościami
Vehicle
obejmują:
vehicleIndex
to liczony od zera indeks liczbyVehicle
w odpowiednich wiadomość z prośbą. Odpowiedzi REST pomijają tę właściwość, gdy jej wartość wynosi 0.vehicleStartTime
to czas, w którym pojazd musi rozpocząć trasę.vehicleEndTime
to czas, w którym pojazd ma zakończyć trasę.
W odpowiedzi routes
będzie wyglądać tak:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
...
],
"transitions": [
...
],
"metrics": {
...
},
...
}
],
...
}
Każdy element ShipmentRoute
zawiera uporządkowaną listę visits
, którą pojazd
gotowe. Każdy element Visit
(REST, gRPC) reprezentuje symbol VisitRequest
(REST, gRPC) z odpowiedniego żądania. Ważne Visit
właściwości obejmują:
shipmentIndex
to liczony od zera indeks dostawy, do której należy ta wizyta w odpowiednim żądaniu.isPickup
ma wartość prawda, jeśli wizyta jest odbiorem, a fałsz, jeśli wizyta jest . Odpowiedzi REST pomijają tę właściwość, gdy wartość jest równa false.visitRequestIndex
to indeksVisitRequest
z poziomu 0 w tablicyShipment.pickups
lubShipment.deliveries
w odpowiednim żądaniu, które reprezentuje zmiennaVisit
. Odpowiedzi REST pomijają tę właściwość, gdy wynosi zero.startTime
to godzina planowanego rozpoczęcia wizyty.loadDemands
mapuje typ wczytywania, aby wczytać ilość potrzebną do ukończeniaVisit
Kwoty obciążenia są ujemne w przypadku wizyt związanych z realizacją wyświetleń, co odzwierciedla obciążenie wyjmowanie ich z pojazdu.
Przykładowa wartość Visit
:
{
"routes": [
{
...
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
...
],
},
...
],
...
}
Każdy element ShipmentRoute
zawiera uporządkowaną listę elementów transitions
, które reprezentują podróże między elementami visits
danego pojazdu. Ważna wiadomość Transition
Właściwości (REST, gRPC) obejmują:
startTime
to czas, w którym pojazd rozpocznie działanie i przejścia z sieci.travelDuration
to czas, do którego musi dotrzeć pojazd. dokończyć przenoszenie.travelDistanceMeters
to odległość, jaką musi być pojazd (w metrach). aby dokończyć przenoszenie.trafficInfoUnavailable
wskazuje, czy dane o ruchu są dostępne dla: i przejścia z sieci.waitDuration
oznacza czas bezczynności, po którym pojazd czeka, zanim będzie mógł rozpocznie sięVisit
. Może to być spowodowane tym, żestart_time
obserwuje:Visit
.totalDuration
to całkowity czas przejścia, z uwzględnieniem podróży, czasy oczekiwania, przerwy i opóźnienia.vehicleLoads
mapuje typ obciążenia na ilość obciążenia przenoszonego przez pojazd w trakcie tę zmianę.
Przykładowy element Transition
wygląda tak:
{
"routes": [
{
...
"transitions": [
...
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
...
],
...
}
],
...
}
Relacja między vists
a transitions
została opisana tutaj
Optymalizacja opcji odbioru i dostawy, a także
Dokumentacja referencyjna ShipmentRoute
(REST, gRPC).
Właściwości danych
Komunikat Metrics
(REST, gRPC) podsumowuje całe rozwiązanie.
Ważne właściwości Metrics
to między innymi:
totalCost
to całkowity koszt poniesionych w związku z pokonaniem tras. Więcej informacji o kosztach w parametrach modelu kosztu.usedVehicleCount
to łączna liczba pojazdów używanych w rozwiązaniu. Pojazdy mogą mieć puste trasy, gdy optymalizator ustali, że ich wykorzystanie jest niepotrzebne.skippedMandatoryShipmentCount
to liczba pominiętych przesyłek, które są „obowiązkowe”. W przypadku obowiązkowej przesyłki nie ma określonego atrybutupenaltyCost
, który poniesionych w przypadku pominięcia przesyłki. Obowiązkowe przesyłki można nadal pomijane, jeśli ich wydajność nie jest możliwa przy określonych ograniczeniach. Więcej informacji o kosztach znajdziesz w sekcji Parametry modelu kosztowego.
Dodatkowe dane są raportowane jako wiadomości AggregatedMetrics
(REST, gRPC). Typ wiadomości AggregatedMetrics
jest używany w przypadku:
usługi Metrics.aggregatedRouteMetrics
oraz ShipmentRoute.metrics
.
usługa Metrics.aggregatedRouteMetrics
zawiera dane zbiorcze ze wszystkich
ShipmentRoute
w: OptimizeToursResponse
. Co ShipmentRoute.metrics
usługa zawiera dane dotyczące tego obszaru: ShipmentRoute
.
Ważne właściwości AggregatedMetrics
:
performedShipmentCount
to liczba przesyłek dostarczonych przez pojazdy na wszystkich trasach.travelDuration
to łączny czas spędzony przez pojazdy na trasie podczas wykonywania swoich zadań.waitDuration
to łączny czas, przez jaki pojazdy spędziły czas na realizacji swoje trasy.delayDuration
to łączny czas opóźnienia pojazdów. Zwykle jest to zero, chyba że w żądaniu użyto parametruTransitionAttributes
.breakDuration
to łączny czas, jaki pojazd poświęca na przerwy podczas realizowania swoich tras.visitDuration
to łączny czas, jaki pojazdy spędzają na wykonywaniu wizyt podczas realizacji swoich tras. Jest to suma wszystkich wartościVisitRequest.duration
dlaVisitRequest
odpowiadającychVisit
przypisanych do danego pojazdu.totalDuration
to łączny czas potrzebny na przejechanie trasy przez pojazdy.travelDistanceMeters
to całkowita odległość pokonana przez pojazdy podczas realizowania swoich tras.maxLoads
mapuje typy ładunków na maksymalną ilość ładunku przewożonego przez pojazdy w dowolnym punkcie ich trasy.
Przykładowa wiadomość w usłudze Metrics
wygląda tak:
{
"routes": [
...
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}
Pełny przykład
Pełna przykładowa odpowiedź na żądanie z narzędzia Utwórz żądanie lubię:
{
"routes": [
{
"vehicleStartTime": "2024-02-13T00:00:00Z",
"vehicleEndTime": "2024-02-13T00:38:42Z",
"visits": [
{
"isPickup": true,
"startTime": "2024-02-13T00:00:00Z",
"detour": "0s"
},
{
"startTime": "2024-02-13T00:19:31Z",
"detour": "0s"
}
],
"transitions": [
{
"travelDuration": "0s",
"waitDuration": "0s",
"totalDuration": "0s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1171s",
"travelDistanceMeters": 9004,
"waitDuration": "0s",
"totalDuration": "1171s",
"startTime": "2024-02-13T00:00:00Z"
},
{
"travelDuration": "1151s",
"travelDistanceMeters": 9599,
"waitDuration": "0s",
"totalDuration": "1151s",
"startTime": "2024-02-13T00:19:31Z"
}
],
"metrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"routeCosts": {
"model.vehicles.cost_per_kilometer": 18.603
},
"routeTotalCost": 18.603
}
],
"metrics": {
"aggregatedRouteMetrics": {
"performedShipmentCount": 1,
"travelDuration": "2322s",
"waitDuration": "0s",
"delayDuration": "0s",
"breakDuration": "0s",
"visitDuration": "0s",
"totalDuration": "2322s",
"travelDistanceMeters": 18603
},
"usedVehicleCount": 1,
"earliestVehicleStartTime": "2024-02-13T00:00:00Z",
"latestVehicleEndTime": "2024-02-13T00:38:42Z",
"totalCost": 18.603,
"costs": {
"model.vehicles.cost_per_kilometer": 18.603
}
}
}