InjectedSolutionConstraint

In die Anfrage eingebrachte Lösung mit 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 einzuschleusenden Lösung. Einige Routen wurden möglicherweise aus der ursprünglichen Lösung entfernt. Die Routen und übersprungenen Sendungen müssen die für injectedFirstSolutionRoutes aufgeführten grundlegenden Gültigkeitsannahmen erfüllen.

skippedShipments[]

object (SkippedShipment)

Übersprungene Lieferungen der einzuschleusenden Lösung. Einige davon wurden möglicherweise aus der ursprünglichen Lösung entfernt. Siehe Feld routes.

constraintRelaxations[]

object (ConstraintRelaxation)

Gibt für null oder mehr Fahrzeuggruppen an, wann und in welchem Umfang 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, ab welchem Grenzwert 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 Fahrzeugindizes an, auf die die Besuchseinschränkung relaxations angewendet wird. Wenn das Feld leer ist, gilt dies als Standard und die relaxations gelten für alle Fahrzeuge, die in anderen constraintRelaxations nicht angegeben sind. Es kann höchstens einen Standard geben, d.h., höchstens ein Feld für die Entspannung von Einschränkungen darf leer sein vehicleIndices. Ein Fahrzeugindex kann nur einmal aufgeführt werden, auch innerhalb mehrerer constraintRelaxations.

Ein Fahrzeugindex wird wie ShipmentRoute.vehicle_index zugeordnet, wenn interpretInjectedSolutionsUsingLabels wahr ist (siehe Kommentar zu fields).

Entspannung

Wenn relaxations leer ist, sind der Beginn und die Reihenfolge aller Besuche auf routes vollständig eingeschränkt und es können keine neuen Besuche eingefügt oder diesen Routen hinzugefügt werden. Außerdem sind der Beginn und das Ende 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 „falsch“ gesetzt.

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

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

Ebenso wird der Fahrzeugstart auf relaxations(i).level gelockert, wenn folgende Bedingungen erfüllt sind:

  • vehicleStartTime >= relaxations(i).threshold_time UND
  • relaxations(i).threshold_visit_count == 0 und das Fahrzeugende wird auf relaxations(i).level gelockert, wenn folgende Bedingungen erfüllt sind:
  • vehicleEndTime >= relaxations(i).threshold_time UND
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Wenn ein Besuch die thresholdVisitCount ODER die thresholdTime erfüllt, fügen Sie zwei relaxations mit derselben level hinzu: eine mit nur thresholdVisitCount und eine mit nur thresholdTime. Wenn ein Besuch die Bedingungen mehrerer relaxations erfüllt, gilt die am wenigsten strikte Stufe. Das bedeutet, dass der Entspannungsgrad vom Start des Fahrzeugs über die Routenbesuche bis zum Ende des Fahrzeugs immer weiter sinkt.

Zeitpunkt und Reihenfolge von Routenbesuchen, die die Grenzbedingungen für eine relaxations nicht erfüllen, sind vollständig eingeschränkt und es können keine Besuche in diese Sequenzen eingefügt werden. Wenn ein Fahrzeugstart oder -ende nicht die Bedingungen für eine Lockerung erfüllt, ist die Zeit festgelegt, es sei denn, das Fahrzeug ist leer.

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

enum (Level)

Der Grad der Lockerung der Einschränkung, der gilt, wenn die Bedingungen bei oder nach thresholdTime UND mindestens thresholdVisitCount erfüllt sind.

thresholdTime

string (Timestamp format)

Der Zeitpunkt, zu dem oder nach dem die Entspannung level angewendet werden kann.

Ein Zeitstempel im Format RFC3339 UTC "Zulu" mit einer Auflösung im Nanosekundenbereich und bis zu neun Nachkommastellen. Beispiele: "2014-10-02T15:01:23Z" und "2014-10-02T15:01:23.045123456Z".

thresholdVisitCount

integer

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

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

Level

Gibt die verschiedenen Einschränkungen an, die für einen Besuch angewendet werden, und die, die folgen, wenn die Grenzbedingungen erfüllt sind.

Die folgende Aufzählung ist in absteigender Reihenfolge der Entspannung geordnet.

Enums
LEVEL_UNSPECIFIED

Implizites Standard-Lockerungsniveau: 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 Start- und Endzeiten von Besuchen und Fahrzeugen werden gelockert, aber jeder Besuch bleibt demselben Fahrzeug zugeordnet und die Besuchsreihenfolge muss eingehalten werden: Zwischen oder vor den Besuchen darf kein Besuch eingefügt werden.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD Entspricht RELAX_VISIT_TIMES_AFTER_THRESHOLD, aber die Besuchsabfolge ist auch lockerer: Besuche können nur von diesem Fahrzeug durchgeführt werden, aber potenziell nicht ausgeführt werden.
RELAX_ALL_AFTER_THRESHOLD Entspricht RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, aber das Fahrzeug ist auch entspannt: Besuche sind ab oder nach dem Grenzwert völlig kostenlos und können möglicherweise nicht ausgeführt werden.