SkippedShipment

Określa szczegóły niewykonanej dostawy 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 przesyłka 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 powód nie jest taki sam dla wszystkich pojazdów, reason będzie mieć 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. Przyczyny mogą być różne w przypadku wszystkich pojazdów, ale zostałaby przekroczona pojemność co najmniej jednego pojazdu (w tym pojazd 1), co najmniej 1 pojazd – „Gruszki” (w tym pojazd 3) oraz limit długości co najmniej 1 pojazdu (w tym pojazdu 1).

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

enum (Code)

Więcej informacji znajdziesz w komentarzach do kodu.

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ę wcześniej w rozwiązaniach, jeśli oba te warunki będą spełnione.

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ść wymagana do realizacji tej przesyłki, tj. od startLocation pojazdu do miejsc odbioru lub dostawy przesyłki oraz do miejsca docelowego pojazdu, przekracza routeDistanceLimit pojazdu.

Pamiętaj, że w tych obliczeniach 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 według najlepszego przypadku, czyli odległość geodezyjna x 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 zrealizować tej wysyłki w najlepszym przypadku (wyliczenie czasu znajdziesz na stronie CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT), jeśli rozpoczyna się najwcześniej w momencie rozpoczęcia. W przypadku całkowitego czasu zamknięcie pojazdu spowoduje jego zakończenie po najpóźniejszej godzinie zakończenia.
VEHICLE_NOT_ALLOWED Pole allowedVehicleIndices przesyłki nie jest puste i ten pojazd do niego nie należy.