InjectedSolutionConstraint

Die Lösung wird in die Anfrage eingefügt. Sie enthält Informationen dazu, welche Besuche eingeschränkt werden müssen und wie.

JSON-Darstellung
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "constraintRelaxations": [
    {
      object (ConstraintRelaxation)
    }
  ]
}
Felder
routes[]

object (ShipmentRoute)

Routen der Lösung, die eingefügt werden soll. Einige Routen werden möglicherweise aus der ursprünglichen Lösung ausgelassen. Die Routen und übersprungenen Sendungen müssen die für injectedFirstSolutionRoutes aufgeführten grundlegenden Gültigkeitsannahmen erfüllen.

skippedShipments[]

object (SkippedShipment)

Übersprungene Sendungen der einzufügenden Lösung. Einige werden möglicherweise aus der ursprünglichen Lösung ausgelassen. Weitere Informationen finden Sie im Feld routes.

constraintRelaxations[]

object (ConstraintRelaxation)

Gibt für null oder mehr Fahrzeuggruppen an, wann und wie stark Einschränkungen gelockert werden sollen. Wenn dieses Feld leer ist, sind alle nicht leeren Fahrzeugrouten vollständig eingeschränkt.

ConstraintRelaxation

Gibt für eine Gruppe von Fahrzeugen an, bei welchem Schwellenwert bzw. welchen Schwellenwerten die Einschränkungen für Besuche gelockert werden und auf welche Stufe. Sendungen, die im Feld skipped_shipment aufgeführt sind, müssen übersprungen werden, d.h., sie können nicht ausgeführt werden.

JSON-Darstellung
{
  "relaxations": [
    {
      object (Relaxation)
    }
  ],
  "vehicleIndices": [
    integer
  ]
}
Felder
relaxations[]

object (Relaxation)

Alle Lockerungen der Besuchseinschränkungen, die für Besuche auf Routen mit Fahrzeugen in vehicleIndices gelten.

vehicleIndices[]

integer

Gibt die Fahrzeugindexe an, für die die Besuchsrestriktion relaxations gilt. Wenn leer, gilt dies als Standard und die relaxations gelten für alle Fahrzeuge, die nicht in anderen constraintRelaxations angegeben sind. Es kann höchstens einen Standard geben, d.h., höchstens ein Feld für die Lockerung von Einschränkungen darf leer sein vehicleIndices. Ein Fahrzeugindex kann nur einmal aufgeführt werden, auch wenn er in mehreren constraintRelaxations enthalten ist.

Ein Fahrzeugindex wird genauso wie ShipmentRoute.vehicle_index zugeordnet, wenn interpretInjectedSolutionsUsingLabels „true“ ist (siehe Kommentar zu fields).

Entspannung

Wenn relaxations leer ist, sind die Startzeit und die Reihenfolge aller Besuche auf routes vollständig eingeschränkt und es dürfen keine neuen Besuche in diese Routen eingefügt oder hinzugefügt werden. Außerdem sind die Start- und Endzeit eines Fahrzeugs in routes vollständig eingeschränkt, es sei denn, das Fahrzeug ist leer (d.h., es hat keine Besuche und usedIfRouteIsEmpty ist im Modell auf „false“ gesetzt).

relaxations(i).level gibt die Stufe der Einschränkungslockerung an, die auf einen Besuch #j angewendet wird, der die folgenden Bedingungen erfüllt:

  • route.visits(j).start_time >= relaxations(i).threshold_time UND
  • j + 1 >= relaxations(i).threshold_visit_count

Analog dazu wird der Fahrzeugstart auf relaxations(i).level verschoben, wenn Folgendes gilt:

  • vehicleStartTime >= relaxations(i).threshold_time UND
  • relaxations(i).threshold_visit_count == 0 und das Fahrzeugende wird auf relaxations(i).level gelockert, wenn Folgendes zutrifft:
  • vehicleEndTime >= relaxations(i).threshold_time UND
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Wenn Sie eine Lockerungsstufe anwenden möchten, wenn ein Besuch die thresholdVisitCount ODER die thresholdTime erfüllt, fügen Sie zwei relaxations mit derselben level hinzu: eine mit nur thresholdVisitCount und die andere mit nur thresholdTime. Wenn ein Besuch die Bedingungen mehrerer relaxations erfüllt, wird die am wenigsten restriktive Ebene angewendet. Daher wird das Entspannungsniveau vom Fahrzeugstart über die Routenbesuche bis zum Fahrzeugende immer entspannter, d.h., es nimmt im Laufe der Route nicht ab.

Die Zeit und Reihenfolge der Routenbesuche, die die Schwellenwertbedingungen keiner relaxations erfüllen, sind vollständig eingeschränkt und es dürfen keine Besuche in diese Sequenzen eingefügt werden. Wenn der Start oder das Ende eines Fahrzeugs nicht den Bedingungen einer Lockerung entspricht, wird die Zeit festgelegt, sofern das Fahrzeug nicht leer ist.

JSON-Darstellung
{
  "level": enum (Level),
  "thresholdTime": string,
  "thresholdVisitCount": integer
}
Felder
level

enum (Level)

Die Stufe der Einschränkungsaufhebung, die angewendet wird, wenn die Bedingungen am oder nach dem thresholdTime UND mindestens thresholdVisitCount erfüllt sind.

thresholdTime

string (Timestamp format)

Die Zeit, zu der oder nach der die Lockerung level angewendet werden kann.

Verwendet RFC 3339, wobei die generierte Ausgabe immer Z-normalisiert ist und 0, 3, 6 oder 9 Nachkommastellen verwendet. Andere Offsets als „Z“ werden ebenfalls akzeptiert. Beispiele: "2014-10-02T15:01:23Z", "2014-10-02T15:01:23.045123456Z" oder "2014-10-02T15:01:23+05:30".

thresholdVisitCount

integer

Die Anzahl der Besuche, nach denen die Lockerung level angewendet werden kann. Wenn thresholdVisitCount = 0 (oder nicht festgelegt) ist, kann level direkt beim Start des Fahrzeugs angewendet werden.

Wenn es route.visits_size() + 1 ist, darf level nur auf das Fahrzeugende angewendet werden. Wenn der Wert höher als route.visits_size() + 1 ist, wird level für diese Route überhaupt nicht angewendet.

Level

Gibt die verschiedenen Stufen der Lockerung von Einschränkungen an, die für einen Besuch und die nachfolgenden Besuche angewendet werden, wenn die Schwellenwertbedingungen erfüllt sind.

Die Aufzählung unten erfolgt in der Reihenfolge der zunehmenden Lockerung.

Enums
LEVEL_UNSPECIFIED

Implizites Standard-Relaxierungsniveau: Es werden keine Einschränkungen gelockert, d.h., alle Besuche sind vollständig eingeschränkt.

Dieser Wert darf in level nicht explizit verwendet werden.

RELAX_VISIT_TIMES_AFTER_THRESHOLD Die Startzeiten für Besuche und Fahrzeuge werden flexibler, aber jeder Besuch ist weiterhin an dasselbe Fahrzeug gebunden und die Reihenfolge der Besuche muss eingehalten werden. Es darf kein Besuch dazwischen oder davor eingefügt werden.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD Wie RELAX_VISIT_TIMES_AFTER_THRESHOLD, aber die Besuchsreihenfolge ist ebenfalls gelockert: Besuche können nur von diesem Fahrzeug durchgeführt werden, können aber möglicherweise nicht durchgeführt werden.
RELAX_ALL_AFTER_THRESHOLD Wie RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, aber das Fahrzeug ist auch entspannt: Besuche sind ab der Schwelle kostenlos und können möglicherweise nicht durchgeführt werden.