SkippedShipment

Określa szczegóły niezrealizowanych dostaw w rozwiązaniu. W najprostszych przypadkach lub jeśli jesteśmy w stanie zidentyfikować przyczynę pominięcia, podajemy tutaj jej przyczynę.

Zapis JSON
{
  "index": integer,
  "label": string,
  "reasons": [
    {
      object (Reason)
    }
  ]
}
Pola
index

integer

Indeks odpowiada indeksowi przesyłki w źródle ShipmentModel.

label

string

Kopia odpowiedniego elementu Shipment.label, jeśli został on podany w elemencie Shipment.

reasons[]

object (Reason)

Lista powodów, dla których dostawa została pominięta. Zobacz komentarz powyżej Reason. Jeśli nie będziemy w stanie ustalić, dlaczego przesyłka została pominięta, nie ustawimy przyczyn.

Przyczyna

Jeśli możemy wyjaśnić, dlaczego przesyłka została pominięta, podamy tutaj powody. Jeśli przyczyna nie jest taka sama w przypadku wszystkich pojazdów, element reason będzie zawierał więcej niż 1 element. Przesyłka pominięta nie może mieć zduplikowanych przyczyn, czyli wszystkich pól, z wyjątkiem pola exampleVehicleIndex. Przykład:

reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 1
  exampleExceededCapacityType: "Apples"
}
reasons {
  code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
  exampleVehicleIndex: 3
  exampleExceededCapacityType: "Pears"
}
reasons {
  code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
  exampleVehicleIndex: 1
}

Przesyłka, która została pominięta, jest niezgodna ze wszystkimi pojazdami. Powody mogą być różne w przypadku poszczególnych pojazdów, ale w przynajmniej jednym z nich przekroczona byłaby pojemność „jabłek” (w tym w pojazdzie 1), w przynajmniej jednym z nich przekroczona byłaby pojemność „gruszek” (w tym w pojazdzie 3), a w przynajmniej jednym z nich przekroczony byłby limit odległości (w tym w pojazdzie 1).

Zapis JSON
{
  "code": enum (Code),
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
Pola
code

enum (Code)

Zapoznaj się z komentarzami w kodzie.

exampleExceededCapacityType

string

Jeśli kod przyczyny to DEMAND_EXCEEDS_VEHICLE_CAPACITY, dokumentuje jeden z przekroczeń typu pojemności.

exampleVehicleIndex

integer

Jeśli przyczyna dotyczy niezgodności przesyłki z pojazdem, to pole zawiera indeks odpowiedniego pojazdu.

Kod

Kod identyfikujący typ przyczyny. Ta kolejność jest bez znaczenia. W szczególności nie wskazuje, czy dana przyczyna pojawi się przed inną w rozwiązaniu, jeśli obie są stosowane.

Wartości w polu enum
CODE_UNSPECIFIED Nie należy jej nigdy używać.
NO_VEHICLE W modelu nie ma żadnego pojazdu, przez co wszystkie dostawy są niemożliwe.
DEMAND_EXCEEDS_VEHICLE_CAPACITY Zapotrzebowanie na dostawę przekracza pojemność pojazdu w przypadku niektórych typów pojemności, z których jeden wynosi exampleExceededCapacityType.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

Minimalna odległość niezbędna do wykonania tej dostawy, czyli od startLocation pojazdu do miejsc odbioru lub dostawy oraz do miejsca docelowego pojazdu, przekracza routeDistanceLimit pojazdu.

Pamiętaj, że do tego obliczenia używamy odległości geodezyjnych.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

Minimalny czas niezbędny do wykonania tej przesyłki, w tym czas podróży, czas oczekiwania i obsługa, przekracza routeDurationLimit pojazdu.

Uwaga: czas podróży jest obliczany w najlepszym możliwym scenariuszu, czyli jako odległość geodezyjna × 36 m/s (około 130 km/h).

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT Tak jak powyżej, ale porównujemy tylko minimalny czas podróży z travelDurationLimit pojazdu.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS Pojazd nie może wykonać tej dostawy w najlepszym scenariuszu (patrz CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT w celu obliczenia czasu), jeśli rozpoczyna się w najwcześniejszym możliwym czasie: łączny czas pracy pojazdu spowoduje, że zakończy on pracę po upływie najpóźniejszego czasu zakończenia.
VEHICLE_NOT_ALLOWED Pole allowedVehicleIndices przesyłki nie jest puste, a pojazd do niego nie należy.