SkippedShipment

Określa szczegóły niewykonywanych dostaw w rozwiązaniu. W przypadku błahych przypadków lub gdy możemy zidentyfikować przyczynę pominięcia, podajemy go tutaj.

Zapis JSON
{
  "index": integer,
  "label": string,
  "reasons": [
    {
      object (Reason)
    }
  ],
  "penaltyCost": number,
  "estimatedIncompatibleVehicleRatio": number
}
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 elementach 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 przyczyny.

penaltyCost

number

To kopia Shipment.penalty_cost, która ma ułatwić Ci określenie powagi pominiętej przesyłki.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.

estimatedIncompatibleVehicleRatio

number

Szacowany odsetek pojazdów, które nie mogą zrealizować tej dostawy z co najmniej jednego z poniższych powodów. Uwaga: pole to jest wypełniane tylko wtedy, gdy przyczyny dotyczą pojazdu.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.

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),
  "exampleVehicleIndices": [
    integer
  ],
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
Pola
code

enum (Code)

Zapoznaj się z komentarzami w kodzie.

exampleVehicleIndices[]

integer

To samo co exampleVehicleIndex, z tą różnicą, że podajemy listę wielu zidentyfikowanych pojazdów. Ta lista nie jest wyczerpująca. Jest on wypełniany tylko wtedy, gdy [fill_example_vehicle_indices_in_skipped_reasons][] ma wartość Prawda.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.

exampleExceededCapacityType

string

Jeśli kod powodu to DEMAND_EXCEEDS_VEHICLE_CAPACITY, dokumentuje jeden typ pojemności, który został przekroczony.

exampleVehicleIndex

integer

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

Kod

Kod identyfikujący typ przyczyny. Kolejność nie ma znaczenia. W szczególności nie wskazuje, czy dana przyczyna pojawi się w rozwiązaniu przed inną, jeśli obie są prawidłowe.

Wartości w polu enum
CODE_UNSPECIFIED Nigdy nie należy ich używać.
NO_VEHICLE W modelu nie ma żadnego pojazdu, przez co wszystkie przesyłki są niemożliwe.
DEMAND_EXCEEDS_VEHICLE_CAPACITY Zapotrzebowanie na przesyłkę przekracza pojemność pojazdu w przypadku niektórych typów pojemności, w tym 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 potrzebny do wykonania tej dostawy, w tym czas przejazdu, oczekiwania i obsługi, przekracza routeDurationLimit pojazdu.

Uwaga: czas przejazdu 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 To samo co powyżej, ale porównujemy tylko minimalny czas podróży i 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, aby poznać sposób obliczania czasu), jeśli rozpoczyna się o najwcześniejszej możliwej godzinie: łączny czas pracy pojazdu spowoduje, że zakończy on pracę po upływie najpóźniejszego możliwego czasu.
VEHICLE_NOT_ALLOWED Pole allowedVehicleIndices przesyłki nie jest puste, a ten pojazd do niego nie należy.
VEHICLE_IGNORED

Pole ignore pojazdu zawiera wartość true.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.

SHIPMENT_IGNORED

Pole ignore przesyłki zawiera wartość true.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

Dostawa została pominięta w injectedSolutionConstraint.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

Zwolnienie z przepisów dotyczących trasy pojazdu określone w injectedSolutionConstraint nie pozwala na wstawianie żadnych wizyt.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.

ZERO_PENALTY_COST

Wysyłka ma zerowe koszty karne. Może to być przydatne jako zaawansowany wybór modelowania, ale może też wyjaśnić, dlaczego przesyłka została pominięta.

Eksperymentalne: zachowanie lub istnienie tego pola może się w przyszłości zmienić.