Solution injectée dans la demande, y compris des informations sur les visites et la façon dont elles doivent l'être
Représentation JSON |
---|
{ "routes": [ { object ( |
Champs | |
---|---|
routes[] |
Routes de la solution à injecter Certains itinéraires peuvent être omis de la solution d'origine. Les itinéraires et les livraisons ignorées doivent respecter les hypothèses de validité de base énumérées pour |
skippedShipments[] |
Envois ignorés de la solution à injecter. Certains peuvent être omis de la solution d'origine. Consultez le champ |
constraintRelaxations[] |
Pour zéro ou plusieurs groupes de véhicules, indique quand et dans quelle mesure assouplir les contraintes. Si ce champ est vide, tous les itinéraires empruntés par des véhicules sont soumis à des contraintes complètes. |
ConstraintRelaxation
Pour un groupe de véhicules, indique à quel niveau les contraintes sur les visites seront assouplies et à quel niveau. Les expéditions indiquées dans le champ skipped_shipment
doivent être ignorées, c'est-à-dire qu'elles ne peuvent pas être effectuées.
Représentation JSON |
---|
{
"relaxations": [
{
object ( |
Champs | |
---|---|
relaxations[] |
Tous les assouplissements des contraintes de visite qui s'appliqueront aux visites d'itinéraires avec des véhicules dans |
vehicleIndices[] |
Spécifie les indices de véhicules auxquels la contrainte de visite Un index de véhicules est mappé de la même manière que |
Relaxation
Si le champ relaxations
est vide, l'heure de début et l'ordre des visites du routes
sont totalement contraignants, et aucune nouvelle visite ne peut être insérée ni ajoutée à ces itinéraires. De plus, les heures de début et d'arrivée d'un véhicule dans routes
sont totalement limitées, sauf si le véhicule est vide (c'est-à-dire qu'il n'a pas de visite et que le paramètre usedIfRouteIsEmpty
est défini sur "false" dans le modèle).
relaxations(i).level
spécifie le niveau d'assouplissement de la contrainte appliqué à une visite #j qui satisfait aux conditions suivantes:
route.visits(j).start_time >= relaxations(i).threshold_time
ETj + 1 >= relaxations(i).threshold_visit_count
De même, le démarrage du véhicule est détendu sur relaxations(i).level
si les conditions suivantes sont respectées:
vehicleStartTime >= relaxations(i).threshold_time
ETrelaxations(i).threshold_visit_count == 0
et l'extrémité du véhicule est flexible surrelaxations(i).level
si les conditions suivantes sont respectées:vehicleEndTime >= relaxations(i).threshold_time
ETroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Pour appliquer un niveau d'assouplissement si une visite répond aux thresholdVisitCount
OU les thresholdTime
, ajoutez deux relaxations
avec le même level
: l'un avec seulement thresholdVisitCount
défini et l'autre avec seulement thresholdTime
défini. Si une visite remplit les conditions de plusieurs relaxations
, le niveau le plus souple s'applique. Ainsi, entre le départ du véhicule et l'arrêt du véhicule, le niveau de relaxation devient plus détendu: le niveau de relaxation ne diminue pas, à mesure que l'itinéraire progresse.
La chronologie et la séquence des visites d'itinéraire qui ne remplissent pas les conditions de seuil des relaxations
sont totalement soumises à des contraintes, et aucune visite ne peut être insérée dans ces séquences. De plus, si le départ ou la fin d'un véhicule ne remplit pas les conditions d'un assouplissement, l'heure est fixe, sauf si le véhicule est vide.
Représentation JSON |
---|
{
"level": enum ( |
Champs | |
---|---|
level |
Niveau d'assouplissement de la contrainte qui s'applique lorsque les conditions égales ou supérieures à |
thresholdTime |
Heure à laquelle l'assouplissement Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
thresholdVisitCount |
Nombre de visites après lesquelles l'assouplissement Si elle est définie sur |
Niveau
Exprime les différents niveaux d'assouplissement des contraintes, qui sont appliqués pour une visite et ceux qui suivent lorsque les conditions de seuil sont remplies.
L'énumération ci-dessous permet d'augmenter la relaxation.
Enums | |
---|---|
LEVEL_UNSPECIFIED |
Niveau d'assouplissement implicite par défaut: aucune contrainte n'est assouplie, c'est-à-dire que toutes les visites sont entièrement soumises à des contraintes. Cette valeur ne doit pas être utilisée explicitement dans |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Les heures de début des visites et les heures de début/fin du véhicule seront assouplies, mais chaque visite reste liée au même véhicule et la séquence des visites doit être respectée: aucune visite ne peut être insérée entre elles ou avant. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Identique à RELAX_VISIT_TIMES_AFTER_THRESHOLD , mais la séquence des visites est également souple: les visites restent simplement liées au véhicule. |
RELAX_ALL_AFTER_THRESHOLD |
Identique à RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , mais le véhicule est également assoupli: les visites sont entièrement sans frais à un certain moment après le seuil défini, et elles peuvent ne pas être effectuées. |