SkippedShipment

Gibt Details zu nicht ausgeführten Sendungen in einer Lösung an. Bei einfachen Fällen und/oder wenn wir die Ursache für das Überspringen ermitteln können, geben wir den Grund hier an.

JSON-Darstellung
{
  "index": integer,
  "label": string,
  "reasons": [
    {
      object (Reason)
    }
  ],
  "penaltyCost": number,
  "estimatedIncompatibleVehicleRatio": number
}
Felder
index

integer

Der Index entspricht dem Index der Sendung in der Quelle ShipmentModel.

label

string

Kopie der entsprechenden Shipment.label, sofern in der Shipment angegeben.

reasons[]

object (Reason)

Eine Liste der Gründe, warum die Sendung übersprungen wurde. Siehe Kommentar oben Reason. Wenn wir nicht nachvollziehen können, warum ein Versand übersprungen wurde, werden keine Gründe festgelegt.

penaltyCost

number

Dies ist eine Kopie der Shipment.penalty_cost. Sie soll dir dabei helfen, die Schwere einer übersprungenen Sendung besser einschätzen zu können.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.

estimatedIncompatibleVehicleRatio

number

Geschätztes Verhältnis der Fahrzeuge, die diese Lieferung aus mindestens einem der folgenden Gründe nicht ausführen können. Hinweis: Dieser Abschnitt wird nur ausgefüllt, wenn es um ein Fahrzeug geht.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.

Grund

Wenn wir den Grund für das Überspringen der Sendung erklären können, wird er hier aufgeführt. Wenn der Grund für alle Fahrzeuge nicht derselbe ist, enthält reason mehr als ein Element. Für eine übersprungene Sendung dürfen keine doppelten Gründe angegeben werden, d.h. alle Felder müssen mit Ausnahme von exampleVehicleIndex identisch sein. Beispiel:

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
}

Der übersprungene Versand ist mit allen Fahrzeugen nicht kompatibel. Die Gründe können für alle Fahrzeuge unterschiedlich sein, aber die Kapazität für „Äpfel“ wird bei mindestens einem Fahrzeug überschritten (einschließlich Fahrzeug 1), die Kapazität für „Birnen“ wird bei mindestens einem Fahrzeug überschritten (einschließlich Fahrzeug 3) und die Entfernungsbeschränkung wird bei mindestens einem Fahrzeug überschritten (einschließlich Fahrzeug 1).

JSON-Darstellung
{
  "code": enum (Code),
  "exampleVehicleIndices": [
    integer
  ],
  "exampleExceededCapacityType": string,
  "exampleVehicleIndex": integer
}
Felder
code

enum (Code)

Weitere Informationen finden Sie in den Kommentaren zum Code.

exampleVehicleIndices[]

integer

Entspricht exampleVehicleIndex, mit der Ausnahme, dass wir eine Liste mit mehreren erkannten Fahrzeugen zur Verfügung stellen. Diese Liste ist nicht unbedingt vollständig. Dieses Feld wird nur ausgefüllt, wenn [fill_example_vehicle_indices_in_skipped_reasons][] auf „wahr“ gesetzt ist.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.

exampleExceededCapacityType

string

Wenn der Grundcode DEMAND_EXCEEDS_VEHICLE_CAPACITY ist, wird ein Kapazitätstyp angegeben, der überschritten wurde.

exampleVehicleIndex

integer

Wenn der Grund mit einer Inkompatibilität zwischen Sendung und Fahrzeug zusammenhängt, enthält dieses Feld den Index eines entsprechenden Fahrzeugs.

Code

Code, der den Grundtyp angibt. Die Reihenfolge spielt hier keine Rolle. Insbesondere gibt es keinen Hinweis darauf, ob ein bestimmter Grund in der Lösung vor einem anderen erscheint, wenn beide zutreffen.

Enums
CODE_UNSPECIFIED Dieser Wert sollte nicht verwendet werden.
NO_VEHICLE Im Modell ist kein Fahrzeug vorhanden, sodass alle Lieferungen nicht möglich sind.
DEMAND_EXCEEDS_VEHICLE_CAPACITY Die Anforderungen der Sendung übersteigen die Kapazität eines Fahrzeugs für einige Kapazitätstypen, darunter exampleExceededCapacityType.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT

Die für die Durchführung dieser Lieferung erforderliche Mindeststrecke, d.h. von der startLocation des Fahrzeugs zu den Abhol- und/oder Lieferorten der Sendung und zum Endort des Fahrzeugs, überschreitet die routeDistanceLimit des Fahrzeugs.

Für diese Berechnung verwenden wir die geodätischen Entfernungen.

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT

Die für diese Lieferung erforderliche Mindestzeit, einschließlich Fahrzeit, Wartezeit und Servicezeit, überschreitet die routeDurationLimit des Fahrzeugs.

Hinweis: Die Reisezeit wird im Best-Case-Szenario berechnet, nämlich als geodätische Entfernung × 36 m/s (ungefähr 130 km/h).

CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT Wie oben, aber wir vergleichen nur die minimale Reisezeit und die travelDurationLimit des Fahrzeugs.
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS Das Fahrzeug kann diese Lieferung im Bestfall nicht ausführen (siehe CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT für die Zeitberechnung), wenn es zum frühestmöglichen Startzeitpunkt startet: Die Gesamtzeit würde dazu führen, dass das Fahrzeug nach seiner spätesten Endzeit endet.
VEHICLE_NOT_ALLOWED Das Feld allowedVehicleIndices der Sendung ist nicht leer und dieses Fahrzeug gehört nicht dazu.
VEHICLE_IGNORED

Das Feld ignore des Fahrzeugs ist auf „true“ gesetzt.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.

SHIPMENT_IGNORED

Das Feld ignore der Sendung ist auf „true“ gesetzt.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.

SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT

Die Lieferung wird im injectedSolutionConstraint übersprungen.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.

VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED

Die in der injectedSolutionConstraint angegebene Lockerung der Fahrzeugroute lässt keine Besuche zu.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.

ZERO_PENALTY_COST

Für die Sendung fallen keine Strafkosten an. Dies kann als erweiterte Modellierungsoption nützlich sein, aber auch nachträglich erklären, warum eine Sendung übersprungen wurde.

Experimentell: Das Verhalten oder Vorhandensein dieses Felds kann sich in Zukunft ändern.