Solution injectée dans la requête, y compris des informations sur les visites qui doivent être limitées et comment elles doivent l'être.
Représentation JSON |
---|
{ "routes": [ { object ( |
Champs | |
---|---|
routes[] |
Itinéraires de la solution à injecter. Il est possible que certains itinéraires soient omis de la solution d'origine. Les itinéraires et les envois ignorés doivent respecter les hypothèses de validité de base indiquées pour |
skipped |
Envois ignorés de la solution à injecter. Certains peuvent être omis de la solution d'origine. Consultez le champ |
constraint |
Pour zéro ou plusieurs groupes de véhicules, spécifie quand et dans quelle mesure assouplir les contraintes. Si ce champ est vide, toutes les routes de véhicule non vides sont entièrement contraintes. |
ConstraintRelaxation
Pour un groupe de véhicules, spécifie à partir de quel ou quels seuils les contraintes liées aux visites seront assouplies et à quel niveau. Les envois listés dans le champ skipped_shipment
doivent être ignorés, c'est-à-dire qu'ils ne peuvent pas être effectués.
Représentation JSON |
---|
{
"relaxations": [
{
object ( |
Champs | |
---|---|
relaxations[] |
Toutes les assouplissements des contraintes de visite qui s'appliqueront aux visites sur les itinéraires avec des véhicules dans |
vehicle |
Spécifie les indices de véhicule auxquels la contrainte de visite Un indice de véhicule est mappé de la même manière que |
Relaxation
Si relaxations
est vide, l'heure de début et la séquence de toutes les visites sur routes
sont entièrement contraintes, et aucune nouvelle visite ne peut être insérée ni ajoutée à ces itinéraires. De plus, les heures de début et de fin d'un véhicule dans routes
sont entièrement contraintes, sauf si le véhicule est vide (c'est-à-dire qu'il n'a pas de visites et que usedIfRouteIsEmpty
est défini sur "false" dans le modèle).
relaxations(i).level
spécifie le niveau de relâchement de la contrainte appliqué à une visite #j qui répond 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 limité à relaxations(i).level
s'il répond aux conditions suivantes:
vehicleStartTime >= relaxations(i).threshold_time
ETrelaxations(i).threshold_visit_count == 0
et l'extrémité du véhicule est relâchée surrelaxations(i).level
si elle répond aux conditions suivantes:vehicleEndTime >= relaxations(i).threshold_time
ETroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Pour appliquer un niveau de relaxation si une visite répond aux critères thresholdVisitCount
OU thresholdTime
, ajoutez deux relaxations
avec le même level
: l'un avec uniquement thresholdVisitCount
défini et l'autre avec uniquement thresholdTime
défini. Si une visite remplit les conditions de plusieurs relaxations
, le niveau le plus souple s'applique. Par conséquent, du début du trajet du véhicule jusqu'à la fin, le niveau de relaxation augmente, c'est-à-dire qu'il ne diminue pas au fur et à mesure du trajet.
Le calendrier et la séquence des visites de l'itinéraire qui ne répondent pas aux conditions de seuil de n'importe quel relaxations
sont entièrement contraints, et aucune visite ne peut être insérée dans ces séquences. De plus, si le début ou la fin d'un véhicule ne remplit pas les conditions de relaxation, l'heure est fixe, sauf si le véhicule est vide.
Représentation JSON |
---|
{
"level": enum ( |
Champs | |
---|---|
level |
Niveau de relâchement des contraintes qui s'applique lorsque les conditions à partir de |
threshold |
Heure à laquelle la relaxation Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
threshold |
Nombre de visites à partir duquel la relaxation S'il s'agit de |
Niveau
Indique les différents niveaux de relâchement des contraintes appliqués à une visite et aux suivantes lorsqu'elle répond aux conditions de seuil.
L'énumération ci-dessous est organisée par ordre d'apaisement croissant.
Enums | |
---|---|
LEVEL_UNSPECIFIED |
Niveau de relaxation par défaut implicite: aucune contrainte n'est levée, c'est-à-dire que toutes les visites sont entièrement contraintes. Cette valeur ne doit pas être utilisée explicitement dans |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
Les heures de début et de fin des visites et des véhicules seront moins strictes, mais chaque visite reste associé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 elles. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Comme pour RELAX_VISIT_TIMES_AFTER_THRESHOLD , mais la séquence de visite est également assouplie: les visites ne peuvent être effectuées que par ce véhicule, mais peuvent potentiellement ne pas être effectuées. |
RELAX_ALL_AFTER_THRESHOLD |
Comme RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD , mais le véhicule est également détendu: les visites sont totalement sans frais à partir de l'heure limite et peuvent potentiellement ne pas être effectuées. |