InjectedSolutionConstraint

In die Anfrage eingefügte Lösung mit Informationen dazu, welche Besuche eingeschränkt werden müssen und wie sie eingeschränkt werden müssen

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

object (ShipmentRoute)

Routen der einzuführenden Lösung. Einige Routen können in der ursprünglichen Lösung weggelassen werden. Die Routen und übersprungenen Sendungen müssen die grundlegenden Gültigkeitsannahmen erfüllen, die für injectedFirstSolutionRoutes aufgeführt sind.

skippedShipments[]

object (SkippedShipment)

Lieferungen der zu injizierenden Lösung übersprungen. Einige können in der ursprünglichen Lösung weggelassen werden. 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, an welchen Schwellenwerten die Beschränkungen für Besuche gelockert werden und bis zu welcher Ebene. Lieferungen, die im Feld skipped_shipment aufgeführt sind, können nur ü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 Besuchsbeschränkung, die auf Besuche auf Routen mit Fahrzeugen in vehicleIndices angewendet werden.

vehicleIndices[]

integer

Gibt die Fahrzeugindizes an, für die die Besuchsbeschränkung relaxations gilt. Wenn das Feld leer ist, gilt dies als Standardeinstellung und die relaxations gilt für alle Fahrzeuge, die nicht in den anderen constraintRelaxations angegeben sind. Es kann höchstens einen Standardwert geben, d.h., es darf höchstens ein Feld zur Einschränkung der Einschränkung leer sein vehicleIndices. Ein Fahrzeugindex kann nur einmal aufgeführt werden, auch innerhalb mehrerer constraintRelaxations.

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

Entspannung

Wenn relaxations leer ist, sind die Startzeit und Sequenz aller Besuche am routes vollständig eingeschränkt und es können keine neuen Besuche eingefügt oder diesen Routen hinzugefügt werden. Außerdem sind die Start- und Endzeit eines Fahrzeugs in routes vollständig begrenzt, 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 das Entspannungsniveau der Einschränkung an, das auf einen Besuch #j angewendet wird, der Folgendes 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 entspannt, wenn folgende Bedingungen erfüllt sind:
  • vehicleEndTime >= relaxations(i).threshold_time UND
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Wenn du eine Entspannungsstufe anwenden möchtest, wenn ein Besuch die thresholdVisitCount ODER thresholdTime erfüllt, musst du zwei relaxations mit demselben level hinzufügen: eine mit nur thresholdVisitCount und die andere mit nur thresholdTime. Wenn ein Besuch die Bedingungen mehrerer relaxations erfüllt, wird die ruhigere Stufe angewendet. Dadurch wird das Entspannungsniveau vom Start des Fahrzeugs über die Besuche der Route bis zum Ende entspannter: Das heißt, das Entspannungsniveau nimmt im Verlauf der Route nicht ab.

Das Timing und die Abfolge von Routenbesuchen, die die Schwellenwertbedingungen von relaxations nicht erfüllen, sind vollständig eingeschränkt. In diese Sequenzen können keine Besuche eingefügt werden. Wenn ein Start oder Ende eines Fahrzeugs nicht die Bedingungen einer Entspannung erfüllt, wird die Zeit festgelegt, es sei denn, das Fahrzeug ist leer.

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

enum (Level)

Das Entspannungsniveau der Einschränkung, das angewendet wird, wenn die Bedingungen ab oder nach thresholdTime UND mindestens thresholdVisitCount erfüllt sind.

thresholdTime

string (Timestamp format)

Der Zeitpunkt, zu oder nach dem die Lockerung 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, bei oder nach denen die Lockerung level angewendet werden kann. Wenn thresholdVisitCount 0 ist oder nicht konfiguriert ist, kann level direkt beim Start des Fahrzeugs angewendet werden.

Wenn route.visits_size() + 1 festgelegt ist, darf level nur auf das Fahrzeugende angewendet werden. Wenn er größer als route.visits_size() + 1 ist, wird level nicht auf diese Route angewendet.

Level

Drückt die verschiedenen Lockerungsstufen aus, die auf einen Besuch angewendet werden und die, die folgen, wenn er die Schwellenwertbedingungen erfüllt.

Die folgende Aufzählung erfolgt in der Reihenfolge, in der die Lockerung zunimmt.

Enums
LEVEL_UNSPECIFIED

Implizierte Standardlockerung: Es gibt keine Beschränkungen, die gelockert werden, d.h. alle Besuche sind vollständig eingeschränkt.

Dieser Wert darf nicht explizit in level verwendet werden.

RELAX_VISIT_TIMES_AFTER_THRESHOLD Start- und Start-/Endzeiten von Fahrten werden gelockert, aber jeder Besuch bleibt an dasselbe Fahrzeug gebunden und die Besuchssequenz muss eingehalten werden: Zwischen oder davor können keine Besuche eingefügt werden.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD Wie bei RELAX_VISIT_TIMES_AFTER_THRESHOLD, aber die Besuchssequenz ist ebenfalls entspannt: Besuche bleiben einfach an ihr Fahrzeug gebunden.
RELAX_ALL_AFTER_THRESHOLD Wie bei RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, aber das Fahrzeug ist auch entspannt: Besuche sind zum Zeitpunkt des Grenzwerts oder danach völlig kostenlos und können möglicherweise keine Leistung erzielen.