- Représentation JSON
- Expédition
- VisitRequest
- LatLng
- Point de cheminement
- Zone géographique
- TimeWindow
- Véhicule
- TravelMode
- UnloadingPolicy
- LoadLimit
- Intervalle
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- Ligne
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
Un modèle de livraison contient un ensemble d'expéditions qui doivent être effectuées par un ensemble de véhicules, tout en minimisant le coût global, qui correspond à la somme des éléments suivants:
- le coût du calcul d'itinéraire des véhicules (somme des coûts par temps total, coût par temps de trajet et coût fixe pour tous les véhicules) ;
- les pénalités de livraison non effectuées.
- le coût de la durée globale des expéditions ;
Représentation JSON |
---|
{ "shipments": [ { object ( |
Champs | |
---|---|
shipments[] |
Ensemble des livraisons qui doivent être effectuées dans le modèle. |
vehicles[] |
Ensemble de véhicules pouvant être utilisés pour effectuer des visites. |
globalStartTime |
Heures de début et de fin globales du modèle: aucune heure en dehors de cette plage ne peut être considérée comme valide. La période du modèle doit être inférieure à un an, c'est-à-dire que l'intervalle entre les éléments Si vous utilisez des champs Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
globalEndTime |
Si cette règle n'est pas configurée, la valeur par défaut est 00:00:00 UTC, le 1er janvier 1971 (secondes: 31536000, nanos: 0). Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
globalDurationCostPerHour |
La "durée globale" du forfait global correspond à la différence entre la date de début effective la plus proche et l'heure de fin effective la plus proche pour tous les véhicules. Les utilisateurs peuvent attribuer un coût par heure à cette quantité pour essayer d'optimiser la tâche le plus tôt possible, par exemple. Ce coût doit être exprimé dans la même unité que le montant en |
durationDistanceMatrices[] |
Spécifie les matrices de durée et de distance utilisées dans le modèle. Si ce champ est vide, Google Maps ou les distances géodésiques sont utilisés à la place, en fonction de la valeur du champ Exemples d'utilisation :
|
durationDistanceMatrixSrcTags[] |
Balises définissant les sources des matrices de durée et de distance ; Les balises correspondent à |
durationDistanceMatrixDstTags[] |
Balises définissant les destinations des matrices de durée et de distance ; Les balises correspondent à |
transitionAttributes[] |
Attributs de transition ajoutés au modèle. |
shipmentTypeIncompatibilities[] |
Ensembles de types de livraison non compatibles (voir |
shipmentTypeRequirements[] |
Ensembles d'exigences pour |
precedenceRules[] |
Ensemble de règles de priorité à appliquer dans le modèle. |
maxActiveVehicles |
Limite le nombre maximal de véhicules actifs. Un véhicule est actif si son itinéraire effectue au moins une expédition. Cela permet de limiter le nombre d'itinéraires dans le cas où il y a moins de conducteurs que de véhicules et que le parc de véhicules est hétérogène. L'optimisation sélectionne ensuite le meilleur sous-ensemble de véhicules à utiliser. La valeur doit être strictement positive. |
Livraison
L'expédition d'un seul article, d'un de ses retraits à l'une de ses livraisons. Pour que la livraison soit considérée comme effectuée, un véhicule unique doit se rendre dans l'un de ses points de retrait (et réduire ses capacités de réserve en conséquence), puis se rendre ultérieurement dans l'un de ses points de livraison (et donc augmenter à nouveau ses capacités de réserve en conséquence).
Représentation JSON |
---|
{ "displayName": string, "pickups": [ { object ( |
Champs | |
---|---|
displayName |
Nom à afficher défini par l'utilisateur pour le colis. Il peut comporter jusqu'à 63 caractères et utiliser des caractères UTF-8. |
pickups[] |
Ensemble des alternatives de retrait associées à la livraison. S'il n'est pas spécifié, le véhicule ne doit se rendre qu'à un lieu correspondant aux livraisons. |
deliveries[] |
Ensemble des alternatives de livraison associées à l'expédition. S'il n'est pas spécifié, il suffit que le véhicule se rende dans un lieu correspondant aux prises en charge. |
loadDemands |
Charges requises pour le colis (par exemple, le poids, le volume, le nombre de palettes, etc.) Les clés du mappage doivent être des identifiants décrivant le type de charge correspondante, idéalement en incluant les unités. Par exemple: "weight_kg", "volume_gallons", "pallet_count", etc. Si une clé donnée n'apparaît pas sur la carte, la charge correspondante est considérée comme nulle. Objet contenant une liste de paires |
allowedVehicleIndices[] |
Ensemble des véhicules pouvant effectuer cette expédition. Si ce champ est vide, tous les véhicules peuvent l'utiliser. Les véhicules sont indiqués par leur indice dans la liste |
costsPerVehicle[] |
Indique les frais à payer lorsque cette livraison est effectuée par chaque véhicule. S'il est spécifié, il doit contenir SOIT:
Ces coûts doivent être exprimés dans la même unité que le |
costsPerVehicleIndices[] |
Intervalles des véhicules auxquels s'applique |
pickupToDeliveryAbsoluteDetourLimit |
Spécifie le délai absolu maximal de déviation par rapport au chemin le plus court entre le retrait et la livraison. Si cet attribut est spécifié, il ne doit pas être négatif, et le colis doit inclure au moins les options de retrait et de livraison. Par exemple, indiquez le délai le plus court pour passer directement de l'alternative de retrait choisie directement à l'alternative de livraison choisie. Ensuite, la définition de
Si des limites relatives et absolues sont spécifiées pour une même livraison, la limite la plus contraignante est utilisée pour chaque paire de retrait/livraison possible. Depuis 2017/2010, les déviations ne sont autorisées que lorsque la durée du trajet ne dépend pas des véhicules. Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
pickupToDeliveryTimeLimit |
Spécifie la durée maximale entre le début du retrait et le début de la livraison d'une livraison. Si cet attribut est spécifié, il ne doit pas être négatif, et le colis doit inclure au moins les options de retrait et de livraison. Cela ne dépend pas des alternatives sélectionnées pour la collecte et la livraison, ni de la vitesse du véhicule. Cette valeur peut être spécifiée en même temps que les contraintes de déviation maximales: la solution respectera ces deux spécifications. Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
shipmentType |
Chaîne non vide indiquant un "type" pour cette livraison. Cette fonctionnalité permet de définir des incompatibilités ou des exigences entre Différent de |
label |
Spécifie une étiquette pour cette livraison. Ce libellé est signalé dans la réponse dans l'élément |
ignore |
Si la valeur est "true", ignorez cette livraison, mais n'appliquez pas de Le fait d'ignorer une livraison entraîne une erreur de validation lorsque le modèle contient des Vous pouvez ignorer une expédition effectuée dans les pays suivants : |
penaltyCost |
Si l'expédition n'est pas effectuée, cette pénalité est ajoutée au coût global des itinéraires. Une expédition est considérée comme terminée si l'une de ses alternatives de retrait et de livraison est utilisée. Le coût peut être exprimé dans la même unité que celle utilisée pour tous les autres champs du modèle relatifs au coût. La valeur doit être positive. IMPORTANT: Si cette pénalité n'est pas spécifiée, elle est considérée comme illimitée, ce qui signifie que l'envoi doit être effectué. |
pickupToDeliveryRelativeDetourLimit |
Spécifie le délai de détour maximal relatif par rapport au trajet le plus court entre le retrait et la livraison. Si cet attribut est spécifié, il ne doit pas être négatif, et le colis doit inclure au moins les options de retrait et de livraison. Par exemple, indiquez le délai le plus court pour passer directement de l'alternative de retrait choisie directement à l'alternative de livraison choisie. Ensuite, la définition de
Si des limites relatives et absolues sont spécifiées pour une même livraison, la limite la plus contraignante est utilisée pour chaque paire de retrait/livraison possible. Depuis 2017/2010, les déviations ne sont autorisées que lorsque la durée du trajet ne dépend pas des véhicules. |
VisitRequest
Demande d'une visite pouvant être effectuée par un véhicule: un véhicule dispose d'une zone géographique (ou deux comme ci-dessous), d'heures d'ouverture et de fermeture représentées par des créneaux horaires, et d'une durée du service (temps passé par le véhicule une fois qu'il est arrivé pour récupérer ou déposer les marchandises).
Représentation JSON |
---|
{ "arrivalLocation": { object ( |
Champs | |
---|---|
arrivalLocation |
La géolocalisation à laquelle le véhicule arrive lorsque vous effectuez cette opération |
arrivalWaypoint |
Point de cheminement où le véhicule arrive lorsque vous effectuez cette |
departureLocation |
Il s'agit de la zone géographique à partir de laquelle le véhicule décolle une fois ce champ |
departureWaypoint |
Point de cheminement où part le véhicule une fois ce point |
tags[] |
Spécifie les tags associés à la demande de visite. Les chaînes vides ou en double ne sont pas autorisées. |
timeWindows[] |
Périodes qui limitent l'heure d'arrivée à une visite. Notez qu'un véhicule peut partir en dehors de l'heure d'arrivée. Par exemple, il n'est pas nécessaire que l'heure d'arrivée + la durée soient dans une fenêtre horaire. Cela peut entraîner un temps d'attente si le véhicule arrive avant L'absence de Les fenêtres temporelles doivent être disjointes, c'est-à-dire qu'aucune période ne doit se chevaucher ou être adjacente à une autre, et les présenter dans un ordre croissant.
|
duration |
Durée de la visite, c'est-à-dire le temps passé par le véhicule entre l'arrivée et le départ (à ajouter au temps d'attente possible ; voir Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
cost |
Coût de traitement de cette demande de visite sur l'itinéraire d'un véhicule. Cela peut être utilisé pour payer des coûts différents pour chaque retrait ou livraison d'un colis. Ce coût doit être exprimé dans la même unité que le |
loadDemands |
Charger les demandes de cette demande de visite. Ce champ est identique à Objet contenant une liste de paires |
visitTypes[] |
Indique les types de visite. Cela peut être utilisé pour allouer le temps supplémentaire nécessaire à un véhicule pour effectuer cette visite (voir Un type ne peut apparaître qu'une seule fois. |
label |
Spécifie un libellé pour cet élément |
LatLng
Objet représentant une paire latitude/longitude. Cette valeur est exprimée par une paire de doubles représentant les degrés de latitude et de longitude. Sauf indication contraire, cet objet doit être conforme à la norme WGS84. Les valeurs doivent se situer dans les limites normalisées.
Représentation JSON |
---|
{ "latitude": number, "longitude": number } |
Champs | |
---|---|
latitude |
Latitude en degrés. Elle doit être comprise dans la plage [-90.0, +90.0]. |
longitude |
Longitude en degrés. Elle doit être comprise dans la plage [-180.0, +180.0]. |
Repère
Encapsule un point de cheminement. Les points de cheminement indiquent les lieux d'arrivée et de départ des VisitRequests, ainsi que les lieux de départ et d'arrivée des véhicules.
Représentation JSON |
---|
{ "sideOfRoad": boolean, // Union field |
Champs | |
---|---|
sideOfRoad |
Facultatif. Indique que l'emplacement de ce point de cheminement doit permettre au véhicule de s'arrêter d'un côté de la route de préférence. Lorsque vous définissez cette valeur, l'itinéraire passe par ce lieu afin que le véhicule puisse s'arrêter au bord de la route où l'emplacement est orienté vers le centre. Cette option ne fonctionne pas pour le mode de transport "WALKING". |
Champ d'union location_type . Différentes manières de représenter un lieu. location_type ne peut être qu'un des éléments suivants : |
|
location |
Point spécifié à l'aide de coordonnées géographiques, y compris un cap facultatif. |
placeId |
ID de lieu du POI associé au point de cheminement. |
Emplacement
Encapsule un emplacement (un point géographique et un titre facultatif).
Représentation JSON |
---|
{
"latLng": {
object ( |
Champs | |
---|---|
latLng |
Coordonnées géographiques du point de cheminement |
heading |
Cap de la boussole associé au sens de la circulation. Cette valeur permet d'indiquer le côté de la route à utiliser pour les montées et les descentes. Les valeurs de cap peuvent aller de 0 à 360, où 0 indique un sens vers le nord, 90 indique un cap suivant l'orientation vers l'est, etc. |
TimeWindow
Les fenêtres temporelles limitent l'heure d'un événement, comme l'heure d'arrivée d'une visite, ou les heures de début et d'arrivée d'un véhicule.
Les limites de fenêtre temporelle (startTime
et endTime
) appliquent les dates au plus tôt et au plus tard de l'événement, de sorte que startTime <= event_time <=
endTime
. La limite inférieure de la fenêtre temporelle flexible, softStartTime
, exprime une préférence pour que l'événement se produise à softStartTime
ou après en générant un coût proportionnel à la durée qui précède l'événement softStartTime. La limite supérieure de la fenêtre temporelle flexible, softEndTime
, exprime une préférence pour que l'événement se produise au softEndTime
ou avant en générant un coût proportionnel à la durée après softEndTime
où l'événement se produit. startTime
, endTime
, softStartTime
et softEndTime
doivent se situer dans les limites de temps globales (voir ShipmentModel.global_start_time
et ShipmentModel.global_end_time
) et doivent respecter:
0 <= `startTime` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
Représentation JSON |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
Champs | |
---|---|
startTime |
Heure de début de la fenêtre de temps difficile. Si aucune valeur n'est spécifiée, elle sera définie sur Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
endTime |
Heure de fin de la fenêtre de temps difficile. Si aucune valeur n'est spécifiée, elle sera définie sur Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
softStartTime |
Heure de démarrage soft de la fenêtre temporelle. Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
softEndTime |
Heure de fin douce de la fenêtre temporelle. Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
costPerHourBeforeSoftStartTime |
Coût par heure ajouté aux autres coûts du modèle si l'événement se produit avant softStartTime, calculé comme suit:
Ce coût doit être positif, et le champ ne peut être défini que si softStartTime a été défini. |
costPerHourAfterSoftEndTime |
Coût par heure ajouté aux autres coûts du modèle si l'événement se produit après le
Ce coût doit être positif, et le champ ne peut être défini que si |
Véhicule
modélise un véhicule lors d'un problème d'expédition ; Si vous résolvez un problème de livraison, un itinéraire commençant par startLocation
et se terminant à endLocation
sera créé pour ce véhicule. Un itinéraire est une séquence de visites (voir ShipmentRoute
).
Représentation JSON |
---|
{ "displayName": string, "travelMode": enum ( |
Champs | |
---|---|
displayName |
Nom à afficher du véhicule défini par l'utilisateur. Il peut comporter jusqu'à 63 caractères et utiliser des caractères UTF-8. |
travelMode |
Mode de transport qui affecte les routes utilisables par le véhicule et sa vitesse. Voir aussi |
startLocation |
Emplacement géographique où le véhicule commence avant de récupérer les colis. Si aucune valeur n'est spécifiée, le véhicule commence à sa première prise en charge. Si le modèle de livraison comporte des matrices de durée et de distance, |
startWaypoint |
Point de cheminement représentant l'emplacement géographique où le véhicule commence avant de récupérer les colis. Si aucune valeur n'est spécifiée pour |
endLocation |
Emplacement géographique où le véhicule se termine après la fin de sa dernière période de |
endWaypoint |
Point de cheminement représentant l'emplacement géographique où le véhicule s'arrête après avoir terminé son dernier |
startTags[] |
Spécifie les tags associés au début de l'itinéraire du véhicule. Les chaînes vides ou en double ne sont pas autorisées. |
endTags[] |
Spécifie les tags ajoutés à la fin de l'itinéraire du véhicule. Les chaînes vides ou en double ne sont pas autorisées. |
startTimeWindows[] |
Périodes pendant lesquelles le véhicule peut partir de son lieu de départ. Ils doivent respecter les limites de temps globales (voir les champs Les fenêtres temporelles appartenant au même champ répété doivent être disjointes. Autrement dit, aucune période ne peut se chevaucher ou être adjacente à une autre, et les présenter dans l'ordre chronologique.
|
endTimeWindows[] |
Périodes pendant lesquelles le véhicule peut arriver à son point d'arrivée. Ils doivent respecter les limites de temps globales (voir les champs Les fenêtres temporelles appartenant au même champ répété doivent être disjointes. Autrement dit, aucune période ne peut se chevaucher ou être adjacente à une autre, et les présenter dans l'ordre chronologique.
|
unloadingPolicy |
Règle de déchargement appliquée au véhicule. |
loadLimits |
Capacités du véhicule (poids, volume, nombre de palettes, par exemple). Les clés du mappage sont les identifiants du type de chargement, conformément aux clés du champ Objet contenant une liste de paires |
costPerHour |
Coûts du véhicule: tous les coûts s'additionnent et doivent être exprimés dans la même unité que le Coût à l'heure de l'itinéraire du véhicule. Ce coût s'applique à la durée totale de l'itinéraire. Il comprend le temps de trajet, le temps d'attente et le temps de visite. Utiliser |
costPerTraveledHour |
Coût par heure parcourue de l'itinéraire du véhicule. Ce coût n'est appliqué qu'au temps de trajet de l'itinéraire (tel qu'indiqué dans |
costPerKilometer |
Coût au kilomètre du trajet du véhicule Ce coût est appliqué à la distance indiquée dans le |
fixedCost |
Frais fixes appliqués si ce véhicule est utilisé pour le traitement d'un colis. |
usedIfRouteIsEmpty |
Ce champ ne s'applique qu'aux véhicules lorsque leur itinéraire ne dessert aucun envoi. Il indique si le véhicule doit être considéré comme d'occasion ou non. Si la valeur est "true", le véhicule va de son point de départ à sa destination même s'il ne propose aucune livraison. Les coûts liés au temps et à la distance résultant de son trajet de départ --> d'arrivée sont pris en compte. Sinon, il ne se déplacera pas de son point de départ à sa position d'arrivée, et aucun |
routeDurationLimit |
Limite appliquée à la durée totale de l'itinéraire du véhicule. Dans une |
travelDurationLimit |
Limite appliquée à la durée du trajet du véhicule. Dans une |
routeDistanceLimit |
Limite appliquée à la distance totale de l'itinéraire du véhicule. Dans un |
extraVisitDurationForVisitType |
Spécifie un mappage entre les chaînes visitTypes et les durées. Il s'agit du temps, en plus des Si une demande de visite comporte plusieurs types, une durée sera ajoutée pour chacun d'eux sur la carte. Objet contenant une liste de paires |
breakRule |
Décrit les horaires de pause à appliquer sur ce véhicule. Si ce champ est vide, aucune pause ne sera programmée pour ce véhicule. |
label |
Spécifie une étiquette pour ce véhicule. Ce libellé est signalé dans la réponse en tant que |
ignore |
Si la valeur est "true", Si une expédition est effectuée par un véhicule ignoré dans Si une expédition est effectuée par un véhicule ignoré dans |
travelDurationMultiple |
Spécifie un facteur multiplicatif pouvant être utilisé pour augmenter ou réduire les temps de trajet du véhicule. Par exemple, si la valeur est définie sur 2,0, ce véhicule est plus lent et son temps de trajet est deux fois supérieur à celui des véhicules standards. Ce multiple n'a pas d'incidence sur la durée des visites. Cela a une incidence sur le coût si AVERTISSEMENT: Les temps de trajet sont arrondis à la seconde la plus proche après l'application de ce multiple, mais avant d'effectuer des opérations numériques. Par conséquent, un petit multiple peut entraîner une perte de précision. Voir aussi |
TravelMode
Modes de transport pouvant être utilisés par les véhicules.
Il doit s'agir d'un sous-ensemble des modes de transport privilégiés de l'API Routes de Google Maps Platform (voir https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode).
Enums | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
Mode de transport non spécifié, équivalent à DRIVING . |
DRIVING |
Mode de transport correspondant à l'itinéraire en voiture (voiture, ...). |
WALKING |
Mode de transport correspondant à l'itinéraire à pied |
UnloadingPolicy
Règle sur le déchargement d'un véhicule. S'applique uniquement aux envois avec retrait et livraison.
Les autres livraisons sont sans frais n'importe où sur l'itinéraire, indépendamment de unloadingPolicy
.
Enums | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
Modalités de déchargement non spécifiées ; les livraisons doivent avoir lieu après le retrait correspondant. |
LAST_IN_FIRST_OUT |
Les livraisons doivent avoir lieu dans l'ordre inverse des retraits |
FIRST_IN_FIRST_OUT |
Les livraisons doivent avoir lieu dans la même commande que les retraits |
LoadLimit
Définit une limite de charge applicable à un véhicule (par exemple, "ce camion ne peut pas supporter plus de 3 500 kg"). Consultez les loadLimits
.
Représentation JSON |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
Champs | |
---|---|
softMaxLoad |
Limite souple de la charge. Consultez les |
costPerUnitAboveSoftMax |
Si le chargement dépasse |
startLoadInterval |
Intervalle de chargement acceptable du véhicule au début de l'itinéraire. |
endLoadInterval |
Intervalle de chargement acceptable du véhicule en fin d'itinéraire. |
maxLoad |
Quantité de charge maximale acceptable. |
Intervalle
Intervalle des quantités de chargement acceptables.
Représentation JSON |
---|
{ "min": string, "max": string } |
Champs | |
---|---|
min |
Une charge minimale acceptable. Doit être ≥ 0. Si elles sont toutes les deux spécifiées, |
max |
Charge maximale acceptable. Doit être ≥ 0. Si aucune valeur n'est spécifiée, la charge maximale n'est pas limitée par ce message. Si elles sont toutes les deux spécifiées, |
DurationLimit
Limite définissant la durée maximale de l'itinéraire d'un véhicule. Il peut être difficile ou doux.
Lorsqu'un champ de limite flexible est défini, le seuil de limite flexible et son coût associé doivent être définis ensemble.
Représentation JSON |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
Champs | |
---|---|
maxDuration |
Limite stricte limitant la durée à la valeur maxDuration maximale. Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
softMaxDuration |
Une limite flexible n'appliquant pas de limite de durée maximale, mais lorsqu'elle est enfreinte, entraîne un coût pour l'itinéraire. Ces coûts s'ajoutent aux autres coûts définis dans le modèle, avec la même unité. S'il est défini, la valeur Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
quadraticSoftMaxDuration |
Une limite flexible n'appliquant pas de limite de durée maximale, mais lorsqu'elle est enfreinte, entraîne un coût quadratique de la durée de l'itinéraire. Ces coûts s'ajoutent aux autres coûts définis dans le modèle, avec la même unité. S'il est défini, la valeur
Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
costPerHourAfterSoftMax |
Coût à l'heure encouru en cas de dépassement du seuil
Le coût ne doit pas être négatif. |
costPerSquareHourAfterQuadraticSoftMax |
Coût par heure carrée facturé si le seuil de Le coût supplémentaire est égal à 0 si la durée est inférieure au seuil. Sinon, le coût dépend de la durée, comme suit:
Le coût ne doit pas être négatif. |
DistanceLimit
Limite définissant la distance maximale pouvant être parcourue. Il peut être difficile ou doux.
Si une limite flexible est définie, softMaxMeters
et costPerKilometerAboveSoftMax
doivent être définis tous les deux, et ne pas être négatifs.
Représentation JSON |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
Champs | |
---|---|
maxMeters |
Une limite stricte limitant la distance à ne pas dépasser la valeur maxMeters. La limite ne doit pas être négative. |
softMaxMeters |
Une limite flexible n'appliquant pas de limite de distance maximale, mais en cas de violation entraîne un coût qui s'ajoute aux autres coûts définis dans le modèle, avec la même unité. Si la valeur est définie pour softMaxMeters, la valeur doit être inférieure aux maxMeters et ne doit pas être négative. |
costPerKilometerAboveSoftMax |
Coût au kilomètre facturé si la distance est supérieure à la limite de
Le coût ne doit pas être négatif. |
BreakRule
Règles pour générer des pauses pour un véhicule (par exemple, des pauses déjeuner) Une pause est une période continue pendant laquelle le véhicule reste inactif à sa position actuelle et ne peut effectuer aucune visite. Une interruption peut se produire:
- pendant le trajet entre deux visites (ce qui inclut le moment qui précède ou suit une visite, mais pas au milieu d'une visite), auquel cas le délai d'acheminement correspondant entre les visites est prolongé ;
- ou avant le démarrage du véhicule (il se peut qu'il ne démarre pas au milieu d'une pause), auquel cas cela n'a aucune incidence sur l'heure de début du véhicule.
- ou après l'arrêt du véhicule (identique à l'heure d'arrivée du véhicule).
Représentation JSON |
---|
{ "breakRequests": [ { object ( |
Champs | |
---|---|
breakRequests[] |
Séquence de pauses. Consultez le message |
frequencyConstraints[] |
Plusieurs |
BreakRequest
La séquence de coupures (numéro et ordre) qui s'applique à chaque véhicule doit être connue au préalable. Les éléments BreakRequest
répétés définissent cette séquence, dans l'ordre dans lequel ils doivent se produire. Leurs périodes (earliestStartTime
/ latestStartTime
) peuvent se chevaucher, mais elles doivent être compatibles avec l'ordre (sélectionné).
Représentation JSON |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
Champs | |
---|---|
earliestStartTime |
Obligatoire. Limite inférieure (incluse) au début de la coupure. Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
latestStartTime |
Obligatoire. Limite supérieure (incluse) au début de la coupure. Code temporel au format RFC3339 UTC "Zulu", avec une résolution à la nanoseconde et jusqu'à neuf chiffres après la virgule. Exemples: |
minDuration |
Obligatoire. Durée minimale de la coupure. Doit être positive. Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
FrequencyConstraint
Vous pouvez restreindre davantage la fréquence et la durée des pauses spécifiées ci-dessus en appliquant une fréquence minimale de coupure, telle que "Il doit y avoir une pause d'au moins une heure toutes les 12 heures". En supposant que cela puisse être interprété comme : "Dans une fenêtre à durée flexible de 12 h, il doit y avoir au moins une pause d'au moins une heure", cet exemple se traduit par la valeur FrequencyConstraint
suivante :
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
L'heure et la durée des pauses dans la solution respecteront toutes ces contraintes, en plus des fenêtres temporelles et des durées minimales déjà spécifiées dans le BreakRequest
.
En pratique, un FrequencyConstraint
peut s'appliquer aux coupures non consécutives. Par exemple, la planification suivante respecte l'exemple "1 h toutes les 12 h" :
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
Représentation JSON |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
Champs | |
---|---|
minBreakDuration |
Obligatoire. Durée minimale de la coupure pour cette contrainte. Non négatif. Voir la description de Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
maxInterBreakDuration |
Obligatoire. Délai maximal autorisé de n'importe quel intervalle de temps de la route qui n'inclut pas au moins une partie d'une interruption de Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
DurationDistanceMatrix
Spécifie une matrice de durée et de distance entre les lieux de départ des visites et les points de départ des véhicules, jusqu'aux points de départ et d'arrivée des véhicules.
Représentation JSON |
---|
{
"rows": [
{
object ( |
Champs | |
---|---|
rows[] |
Spécifie les lignes de la matrice de durée et de distance. Il doit comporter autant d'éléments que |
vehicleStartTag |
Balise définissant les véhicules auxquels s'applique cette matrice de durée et de distance. Si ce champ est vide, il s'applique à tous les véhicules, et il ne peut y avoir qu'une seule matrice. Chaque départ de véhicule doit correspondre exactement à une matrice, c'est-à-dire qu'un seul des champs Toutes les matrices doivent avoir un |
Row
Spécifie une ligne de la matrice de durée et de distance.
Représentation JSON |
---|
{ "durations": [ string ], "meters": [ number ] } |
Champs | |
---|---|
durations[] |
Valeurs de durée pour une ligne donnée. Il doit comporter autant d'éléments que Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
meters[] |
Valeurs de distance pour une ligne donnée. Si aucun coût ou aucune contrainte ne fait référence à des distances dans le modèle, ce champ peut être laissé vide. Dans le cas contraire, il doit comporter autant d'éléments que |
TransitionAttributes
Spécifie les attributs des transitions entre deux visites consécutives sur un itinéraire. Plusieurs TransitionAttributes
peuvent s'appliquer à la même transition. Dans ce cas, tous les coûts supplémentaires s'additionnent et la contrainte ou la limite la plus stricte s'applique (selon la sémantique naturelle "AND").
Représentation JSON |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
Champs | |
---|---|
srcTag |
Les balises qui définissent l'ensemble des transitions (src->dst) auxquelles ces attributs s'appliquent. Une visite à la source ou un départ de véhicule correspond si son |
excludedSrcTag |
Consultez les |
dstTag |
Une visite à la destination ou l'extrémité d'un véhicule correspond si son |
excludedDstTag |
Consultez les |
cost |
Indique le coût de cette transition. Cette valeur est exprimée dans la même unité que tous les autres coûts du modèle et ne doit pas être négative. Il s'ajoute à tous les autres coûts existants. |
costPerKilometer |
Spécifie un coût au kilomètre appliqué à la distance parcourue lors de la transition. Il s'élève à n'importe quel |
distanceLimit |
Spécifie la limite de la distance parcourue lors de cette transition. Depuis 2021/06, seules les limites souples sont acceptées. |
delay |
Spécifie le délai nécessaire lors de l'exécution de cette transition. Ce retard se produit toujours après la fin de la visite de la source et avant le début de la visite de la destination. Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
ShipmentTypeIncompatibility
Spécifie les incompatibilités entre les expéditions en fonction de leur type d'expédition. L'affichage d'expéditions incompatibles sur un même itinéraire est limité en fonction du mode d'incompatibilité.
Représentation JSON |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
Champs | |
---|---|
types[] |
Liste des types incompatibles. Deux livraisons dont l'attribut |
incompatibilityMode |
Mode appliqué à l'incompatibilité. |
IncompatibilityMode
Modes définissant l'apparence d'expéditions incompatibles sur un même itinéraire
Enums | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
Mode d'incompatibilité non spécifié. Cette valeur ne doit jamais être utilisée. |
NOT_PERFORMED_BY_SAME_VEHICLE |
Dans ce mode, deux envois dont le type est incompatible ne peuvent jamais partager le même véhicule. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Pour deux livraisons dont les types ne sont pas compatibles avec le mode d'incompatibilité
|
ShipmentTypeRequirement
Spécifie les exigences entre les expéditions en fonction de leur type d'expédition. Les spécificités de l'exigence sont définies par le mode d'exigence.
Représentation JSON |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
Champs | |
---|---|
requiredShipmentTypeAlternatives[] |
Liste des autres types de livraison requis par le |
dependentShipmentTypes[] |
Toutes les livraisons dont le type est indiqué dans le champ REMARQUE: Les chaînes d'exigences telles que |
requirementMode |
Mode appliqué à l'exigence. |
RequirementMode
Modes définissant l'apparence des livraisons dépendantes sur un itinéraire.
Enums | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Mode d'exigence non spécifié. Cette valeur ne doit jamais être utilisée. |
PERFORMED_BY_SAME_VEHICLE |
Dans ce mode, tous les envois "dépendants" doivent partager le même véhicule qu'au moins l'un des envois "obligatoires". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Avec le mode Un retrait d'un colis "dépendant" doit donc avoir l'une des valeurs suivantes:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Identique à la procédure précédente, à la différence que les livraisons "dépendantes" doivent être associées à une livraison "obligatoire" dans le véhicule au moment de la livraison. |
PrecedenceRule
Règle de priorité entre deux événements (chaque événement étant le retrait ou la livraison d'un colis): le "deuxième" événement doit commencer au moins offsetDuration
après le début du "premier".
Plusieurs priorités peuvent faire référence au même événement (ou à des événements associés). Par exemple, "Le retrait de B a lieu après la livraison de A" et "le retrait de C a lieu après le retrait de B".
De plus, les priorités ne s'appliquent que lorsque les deux expéditions sont effectuées et sont sinon ignorées.
Représentation JSON |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
Champs | |
---|---|
firstIsDelivery |
Indique si le "premier" événement est une diffusion. |
secondIsDelivery |
Indique si le "deuxième" événement est une diffusion. |
offsetDuration |
Décalage entre le "premier" et le "deuxième" événement. Elle peut être négative. Durée en secondes avec un maximum de neuf chiffres après la virgule, se terminant par " |
firstIndex |
Index des livraisons du "premier" événement. Ce champ doit être renseigné. |
secondIndex |
Index des livraisons du "deuxième" événement. Ce champ doit être renseigné. |