Solution injectée dans la requête, y compris des informations sur les visites qui doivent être contraintes et sur la manière dont elles doivent l'être.
| Représentation JSON |
|---|
{ "routes": [ { object ( |
| Champs | |
|---|---|
routes[] |
Routes de la solution à injecter. Il est possible que certains itinéraires soient omis de la solution d'origine. Les itinéraires et les livraisons ignorées doivent respecter les hypothèses de validité de base listées pour |
skippedShipments[] |
Livraisons ignorées de la solution à injecter. Il est possible que certains soient omis de la solution d'origine. Consultez le champ |
constraintRelaxations[] |
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éhicules non vides sont entièrement contraintes. |
ConstraintRelaxation
Pour un groupe de véhicules, spécifie à quel seuil les contraintes sur les visites seront assouplies et à quel niveau. Les livraisons listées dans le champ skipped_shipment sont contraintes d'être ignorées, c'est-à-dire qu'elles ne peuvent pas être effectuées.
| Représentation JSON |
|---|
{
"relaxations": [
{
object ( |
| Champs | |
|---|---|
relaxations[] |
Toutes les assouplissements de contraintes de visite qui s'appliqueront aux visites sur les itinéraires avec des véhicules dans |
vehicleIndices[] |
Spécifie les indices de véhicules auxquels s'applique la contrainte de visite Un index 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, l'heure de début et de fin d'un véhicule dans routes est entièrement contrainte, 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 des contraintes appliqué à une visite #j qui satisfait à la condition suivante :
route.visits(j).start_time >= relaxations(i).threshold_timeETj + 1 >= relaxations(i).threshold_visit_count
De même, le démarrage du véhicule est relâché à relaxations(i).level s'il satisfait à la condition suivante :
vehicleStartTime >= relaxations(i).threshold_timeETrelaxations(i).threshold_visit_count == 0et la fin du véhicule est relâchée àrelaxations(i).levelsi elle satisfait :vehicleEndTime >= relaxations(i).threshold_timeETroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
Pour appliquer un niveau de tolérance si une visite répond à thresholdVisitCount OU à thresholdTime, ajoutez deux relaxations avec le même level : l'un avec thresholdVisitCount uniquement et l'autre avec thresholdTime uniquement. Si une visite remplit les conditions de plusieurs relaxations, le niveau le moins restrictif s'applique. Par conséquent, du début du véhicule à la fin du véhicule en passant par les visites d'itinéraire dans l'ordre, le niveau de relaxation devient plus souple : c'est-à-dire que le niveau de relaxation ne diminue pas au fur et à mesure que l'itinéraire progresse.
Le calendrier et la séquence des visites d'itinéraire qui ne satisfont pas aux conditions de seuil d'un 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 répond à aucune condition 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 à |
thresholdTime |
Heure à partir de laquelle l'assouplissement Utilise la norme RFC 3339, où la sortie générée utilise toujours le format UTC (indiqué par "Z" pour le temps universel coordonné) avec des secondes fractionnaires de 0, 3, 6 ou 9 chiffres décimaux. Des décalages horaires autres que "Z" (UTC) sont également acceptés. Exemples : |
thresholdVisitCount |
Nombre de visites à partir duquel la relaxation Si la valeur est |
Niveau
Exprime les différents niveaux de relaxation des contraintes, qui sont appliqués pour une visite et celles qui suivent lorsqu'elle satisfait aux conditions de seuil.
L'énumération ci-dessous est classée par ordre de relaxation croissante.
| Enums | |
|---|---|
LEVEL_UNSPECIFIED |
Niveau de relaxation par défaut implicite : aucune contrainte n'est relâché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 des visites et les heures de début/fin des véhicules seront plus flexibles, mais chaque visite restera associée au même véhicule et l'ordre des visites devra être respecté : aucune visite ne pourra être insérée entre elles ni avant elles. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
Identique à RELAX_VISIT_TIMES_AFTER_THRESHOLD, mais la séquence de visites 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 |
Identique à RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD, mais le véhicule est également détendu : les visites sont entièrement sans frais à partir du seuil de temps et peuvent potentiellement ne pas être effectuées. |