InjectedSolutionConstraint

Eine in die Anfrage eingefügte Lösung, einschließlich Informationen darüber, welche Besuche 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 werden in der ursprünglichen Lösung möglicherweise weggelassen. Die Routen und übersprungenen Sendungen müssen die für injectedFirstSolutionRoutes aufgeführten grundlegenden Gültigkeitsannahmen erfüllen.

skippedShipments[]

object (SkippedShipment)

Lieferungen der Injektionslösung übersprungen. Einige davon werden in der ursprünglichen Lösung möglicherweise weggelassen. Siehe Feld routes.

constraintRelaxations[]

object (ConstraintRelaxation)

Gibt für keine oder mehr Fahrzeuggruppen an, wann und wie stark die 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 welchen Schwellenwerten die Einschränkungen für Besuche auf welcher Ebene gelockert werden. Lieferungen im Feld skipped_shipment können nicht übersprungen werden und können daher nicht ausgeführt werden.

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

object (Relaxation)

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

vehicleIndices[]

integer

Gibt die Fahrzeugindexe an, für die die relaxations für die Besuchsbeschränkung gilt. Wenn das Feld leer ist, wird dies als Standardwert betrachtet und die relaxations gilt für alle Fahrzeuge, die nicht in anderen constraintRelaxations angegeben sind. Es kann höchstens eine Standardeinstellung geben, d.h., in höchstens einem Feld zum Lockern der Einschränkung darf vehicleIndices leer sein. Ein Fahrzeugindex kann nur einmal aufgeführt werden, auch wenn sich mehrere constraintRelaxations befinden.

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

Entspannung

Wenn relaxations leer ist, sind Startzeit und Reihenfolge aller Besuche am routes vollständig beschränkt, und in diese Routen können keine neuen Besuche eingefügt oder 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 wurden keine Durchfahrten durchgeführt und usedIfRouteIsEmpty im Modell auf „false“ gesetzt.

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

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

Ebenso wird das Starten des Fahrzeugs 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 Ende des Fahrzeugs wird auf relaxations(i).level gelockert, wenn Folgendes erfüllt:
  • vehicleEndTime >= relaxations(i).threshold_time UND
  • route.visits_size() + 1 >= relaxations(i).threshold_visit_count

Wenn ein Entspannungsgrad angewendet wird, wenn ein Besuch die thresholdVisitCount ODER die thresholdTime trifft, 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, gilt die strengste Stufe. Infolgedessen nimmt der Entspannungsgrad vom Start über die Routenbesichtigungen bis zum Ende der Route weniger ab.

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

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

enum (Level)

Die Stufe der Einschränkungslockerung, die 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 level-Sperrung angewendet werden kann.

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

thresholdVisitCount

integer

Anzahl der Besuche, bei denen oder nach der level Lockerung angewendet werden kann. Wenn thresholdVisitCount 0 ist oder nicht festgelegt ist, kann die level direkt beim Starten des Fahrzeugs angewendet werden.

Wenn der Wert route.visits_size() + 1 lautet, kann die level nur auf die Fahrzeugseite angewendet werden. Wenn sie mehr als route.visits_size() + 1 ist, wird level überhaupt nicht auf diese Route angewendet.

Ebene

Drückt die verschiedenen einschränkenden Entspannungsstufen aus, die für einen Besuch angewendet werden und die folgenden, wenn die Schwellenwertbedingungen erfüllt sind.

Die folgende Aufzählung bezieht sich auf die zunehmende Entspannung.

Enums
LEVEL_UNSPECIFIED

Implizites Standardentspannungsniveau: Keine Beschränkungen werden gelockert, d.h. alle Besuche sind vollständig beschränkt.

Dieser Wert darf in level nicht explizit verwendet werden.

RELAX_VISIT_TIMES_AFTER_THRESHOLD Startzeiten und Start- und Endzeiten der Fahrzeuge werden gelockert, aber jeder Besuch bleibt an dasselbe Fahrzeug gebunden und die Besuchsabfolge muss beobachtet werden: Zwischen den beiden oder davor kann kein Besuch eingefügt werden.
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD Wie RELAX_VISIT_TIMES_AFTER_THRESHOLD, aber die Besuchssequenz ist auch gelockert: Besuche bleiben einfach an das Fahrzeug gebunden.
RELAX_ALL_AFTER_THRESHOLD Wie „RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD“, aber das Fahrzeug ist auch entspannt: Besuche sind zum oder nach dem Grenzwert völlig kostenlos und können unter Umständen nicht ausgeführt werden.