- Représentation JSON
- Expédition
- VisitRequest
- LatLng
- Waypoint
- Emplacement
- TimeWindow
- Véhicule
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- Intervalle
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- Objectif
- Type
- DurationDistanceMatrix
- Ligne
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
Un modèle d'expédition 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 est la somme des éléments suivants :
- le coût de l'itinéraire des véhicules (somme du coût par durée totale, du coût par temps de trajet et du coût fixe pour tous les véhicules).
- les pénalités pour les livraisons non effectuées.
- le coût de la durée globale des expéditions.
| Représentation JSON |
|---|
{ "shipments": [ { object ( |
| Champs | |
|---|---|
shipments[] |
Ensemble d'expéditions à effectuer dans le modèle. |
vehicles[] |
Ensemble de véhicules pouvant être utilisés pour effectuer des visites. |
objectives[] |
Ensemble d'objectifs pour ce modèle, que nous allons transformer en coûts. Si elle n'est pas vide, le modèle d'entrée doit être sans frais. Pour obtenir la requête modifiée, veuillez utiliser Expérimental : pour en savoir plus, consultez https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request. |
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 Lorsque vous utilisez des champs 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 : |
globalEndTime |
Si elle n'est pas définie, la valeur par défaut est 00:00:00 UTC, le 1er janvier 1971 (c'est-à-dire secondes : 31536000, nanosecondes : 0). 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 : |
globalDurationCostPerHour |
La "durée globale" du forfait correspond à la différence entre la date de début la plus ancienne et la date de fin la plus tardive de tous les véhicules. Les utilisateurs peuvent attribuer un coût par heure à cette quantité pour essayer d'optimiser la fin des tâches au plus tôt, par exemple. Ce coût doit être exprimé dans la même unité que |
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 seront utilisées à 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 tags correspondent à |
durationDistanceMatrixDstTags[] |
Tags définissant les destinations des matrices de durée et de distance ; Les tags correspondent à |
transitionAttributes[] |
Ajout d'attributs de transition au modèle. |
shipmentTypeIncompatibilities[] |
Ensembles de shipment_types incompatibles (voir |
shipmentTypeRequirements[] |
Ensembles d'exigences |
precedenceRules[] |
Ensemble de règles de priorité qui doivent être appliquées dans le modèle. IMPORTANT : L'utilisation de règles de précédence limite la taille du problème qui peut être optimisé. Les demandes utilisant des règles de priorité qui incluent de nombreuses expéditions peuvent être refusées. |
maxActiveVehicles |
Limite le nombre maximal de véhicules actifs. Un véhicule est actif si son itinéraire effectue au moins une livraison. Cela peut être utilisé pour limiter le nombre d'itinéraires dans le cas où il y a moins de chauffeurs que de véhicules et que la flotte de véhicules est hétérogène. L'optimisation sélectionnera ensuite le meilleur sous-ensemble de véhicules à utiliser. Doit être strictement positif. |
Livraison
Envoi d'un seul article, de l'un de ses points de collecte à l'un de ses points de livraison. Pour que l'expédition soit considérée comme effectuée, un véhicule unique doit se rendre à l'un de ses lieux de prise en charge (et réduire ses capacités disponibles en conséquence), puis à l'un de ses lieux de livraison (et donc augmenter à nouveau ses capacités disponibles en conséquence).
| Représentation JSON |
|---|
{ "displayName": string, "pickups": [ { object ( |
| Champs | |
|---|---|
displayName |
Nom à afficher de l'envoi défini par l'utilisateur. Il peut comporter jusqu'à 63 caractères et utiliser des caractères UTF-8. |
pickups[] |
Ensemble d'alternatives de retrait associées à l'expédition. Si aucune valeur n'est spécifiée, le véhicule n'a besoin de se rendre qu'à un endroit correspondant aux livraisons. |
deliveries[] |
Ensemble d'alternatives de livraison associées à l'envoi. Si aucune valeur n'est spécifiée, le véhicule n'a besoin de se rendre qu'à un lieu correspondant aux points de retrait. |
loadDemands |
Les exigences de chargement de l'envoi (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 correspondant, idéalement en incluant également les unités. Par exemple : "weight_kg", "volume_gallons", "pallet_count", etc. Si une clé donnée n'apparaît pas dans le mappage, la charge correspondante est considérée comme nulle. |
allowedVehicleIndices[] |
Ensemble de véhicules pouvant effectuer cette livraison. Si ce champ est vide, tous les véhicules peuvent effectuer la tâche. Les véhicules sont indiqués par leur index dans la liste |
costsPerVehicle[] |
Spécifie le coût encouru lorsque cette expédition est effectuée par chaque véhicule. Si elle est spécifiée, elle doit comporter l'UNE des options suivantes :
Ces coûts doivent être exprimés dans la même unité que |
costsPerVehicleIndices[] |
Indices des véhicules auxquels |
pickupToDeliveryAbsoluteDetourLimit |
Indique la durée maximale absolue du détour par rapport au trajet le plus court entre le point de prise en charge et le point de livraison. Si elle est spécifiée, elle doit être non négative et l'expédition doit contenir au moins un enlèvement et une livraison. Par exemple, soit t le temps le plus court pour aller directement de l'alternative de retrait sélectionnée à l'alternative de livraison sélectionnée. Le paramètre Si des limites relatives et absolues sont spécifiées pour le même envoi, la limite la plus contraignante est utilisée pour chaque paire d'enlèvement/de livraison possible. Depuis le 10/2017, les détours ne sont acceptés que lorsque les durées de trajet ne dépendent pas des véhicules. |
pickupToDeliveryTimeLimit |
Spécifie la durée maximale entre le début de l'enlèvement et le début de la livraison d'un colis. Si elle est spécifiée, elle doit être non négative et l'expédition doit contenir au moins un enlèvement et une livraison. Cela ne dépend pas des alternatives sélectionnées pour le retrait et la livraison, ni de la vitesse du véhicule. Cette contrainte peut être spécifiée en même temps que les contraintes de détour maximal : la solution respectera les deux spécifications. |
shipmentType |
Chaîne non vide spécifiant un "type" pour cet envoi. Cette fonctionnalité peut être utilisée pour définir des incompatibilités ou des exigences entre Diffère de |
label |
Spécifie un libellé pour cet envoi. Ce libellé est indiqué dans la réponse, dans le |
ignore |
Si la valeur est "true", ignorez cet envoi, mais n'appliquez pas de Si vous ignorez une expédition, une erreur de validation se produit si le modèle contient des Il est possible d'ignorer une expédition effectuée dans |
penaltyCost |
Si l'expédition n'est pas effectuée, cette pénalité est ajoutée au coût global des itinéraires. Une livraison est considérée comme terminée si l'une de ses alternatives de retrait et de livraison est visitée. Le coût peut être exprimé dans la même unité que celle utilisée pour tous les autres champs liés aux coûts dans le modèle et doit être positif. IMPORTANT : Si cette pénalité n'est pas spécifiée, elle est considérée comme infinie, c'est-à-dire que l'expédition doit être effectuée. |
pickupToDeliveryRelativeDetourLimit |
Indique le temps de détour relatif maximal par rapport au chemin le plus court entre le point de prise en charge et le point de livraison. Si elle est spécifiée, elle doit être non négative et l'expédition doit contenir au moins un enlèvement et une livraison. Par exemple, soit t le temps le plus court pour aller directement de l'alternative de retrait sélectionnée à l'alternative de livraison sélectionnée. Le paramètre Si des limites relatives et absolues sont spécifiées pour le même envoi, la limite la plus contraignante est utilisée pour chaque paire d'enlèvement/de livraison possible. Depuis le 10/2017, les détours ne sont acceptés que lorsque les durées de trajet ne dépendent pas des véhicules. |
VisitRequest
Demande de visite pouvant être effectuée par un véhicule : elle comporte une ou deux coordonnées géographiques (voir ci-dessous), des heures d'ouverture et de fermeture représentées par des plages horaires, et une durée de service (temps passé par le véhicule une fois arrivé pour récupérer ou déposer des marchandises).
| Représentation JSON |
|---|
{ "arrivalLocation": { object ( |
| Champs | |
|---|---|
arrivalLocation |
Emplacement géographique où le véhicule arrive lors de l'exécution de cette |
arrivalWaypoint |
Point de cheminement où le véhicule arrive lors de l'exécution de cette |
departureLocation |
Emplacement géographique où le véhicule part après avoir terminé cette |
departureWaypoint |
Point de cheminement où le véhicule repart après avoir terminé cette |
tags[] |
Spécifie les tags associés à la demande de visite. Les chaînes vides ou en double ne sont pas autorisées. |
timeWindows[] |
Plages horaires qui limitent l'heure d'arrivée à une visite. Notez qu'un véhicule peut partir en dehors de la période d'arrivée. En d'autres termes, l'heure d'arrivée et la durée ne doivent pas nécessairement se trouver dans une période. 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 fenêtre temporelle ne doit chevaucher une autre ni être adjacente à une autre, et elles doivent être dans l'ordre croissant.
|
duration |
Durée de la visite, c'est-à-dire le temps passé par le véhicule entre son arrivée et son départ (à ajouter au temps d'attente éventuel ; voir |
cost |
Coût du service pour cette demande de visite sur un itinéraire de véhicule. Vous pouvez l'utiliser pour payer différents frais pour chaque option de retrait ou de livraison d'un colis. Ce coût doit être exprimé dans la même unité que |
loadDemands |
Charge les demandes de cette demande de visite. Ce champ est identique au champ |
visitTypes[] |
Spécifie les types de visites. Cela peut servir à 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 ce |
avoidUTurns |
Indique si les demi-tours doivent être évités sur les itinéraires en voiture à cet endroit. L'évitement des demi-tours est effectué dans la mesure du possible, mais n'est pas garanti. Il s'agit d'une fonctionnalité expérimentale. Son comportement est susceptible d'être modifié. Expérimental : pour en savoir plus, consultez https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request. |
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 waypoints marquent les lieux d'arrivée et de départ des VisitRequests, ainsi que les lieux de départ et d'arrivée des Vehicles.
| Représentation JSON |
|---|
{
"sideOfRoad": boolean,
"vehicleStopover": boolean,
// The following is a list of mutually exclusive fields. At most one of the
// fields will be set in a response:
"location": {
object ( |
| Champs | |
|---|---|
sideOfRoad |
Facultatif. Indique que l'emplacement de ce point de cheminement doit s'arrêter de préférence à un côté spécifique de la route. Lorsque vous définissez cette valeur, l'itinéraire passe par l'emplacement afin que le véhicule puisse s'arrêter du côté de la route vers lequel l'emplacement est orienté par rapport au centre de la route. Cette option ne fonctionne pas pour le mode de déplacement "À PIED". |
vehicleStopover |
Indique que le point de cheminement est destiné aux véhicules qui doivent s'y arrêter pour prendre en charge ou déposer des passagers. Cette option ne fonctionne que pour le mode de déplacement "DRIVING" et lorsque le "locationType" est défini sur "location". Expérimental : le comportement ou l'existence de ce champ peuvent changer à l'avenir. |
| Différentes façons de représenter un lieu. Vous trouverez ci-dessous la liste des champs mutuellement exclusifs. Au maximum, un seul des champs sera défini dans une réponse : | |
location |
Point spécifié à l'aide de coordonnées géographiques, y compris un cap facultatif. |
placeId |
ID de lieu du point d'intérêt associé au point de repère. Lorsque vous utilisez un ID de lieu pour spécifier le lieu d'arrivée ou de départ d'une VisitRequest, utilisez un ID de lieu suffisamment précis pour déterminer un emplacement LatLng pour la navigation vers le lieu. Par exemple, un ID de lieu représentant un bâtiment convient, mais un ID de lieu représentant une route est déconseillé. |
| Fin des champs qui s'excluent mutuellement. | |
Emplacement
Encapsule un emplacement (un point géographique et un cap facultatif).
| Représentation JSON |
|---|
{
"latLng": {
object ( |
| Champs | |
|---|---|
latLng |
Coordonnées géographiques du point de repère. |
heading |
Orientation de la boussole associée au sens du trafic. Cette valeur permet de spécifier le côté de la route à utiliser pour la prise en charge et la dépose. Les valeurs de cap peuvent être comprises entre 0 et 360, où 0 correspond à un cap plein nord, 90 à un cap plein est, etc. |
TimeWindow
Les plages horaires limitent l'heure d'un événement, comme l'heure d'arrivée à une visite ou l'heure de début et de fin d'un véhicule.
Les limites de la période d'exécution stricte, startTime et endTime, imposent les heures de début et de fin 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 entraînant un coût proportionnel à la durée avant softStartTime à laquelle l'événement se produit. La limite supérieure de la fenêtre temporelle flexible, softEndTime, exprime une préférence pour que l'événement se produise à softEndTime ou avant, en entraînant un coût proportionnel à la durée écoulée après softEndTime. startTime, endTime, softStartTime et softEndTime doivent respecter les limites de temps globales (voir ShipmentModel.global_start_time et ShipmentModel.global_end_time) et :
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `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 période difficile. Si aucune valeur n'est spécifiée, la valeur par défaut est 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 : |
endTime |
Heure de fin de la période stricte. Si aucune valeur n'est spécifiée, la valeur par défaut est 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 : |
softStartTime |
Heure de début progressif de la période. 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 : |
softEndTime |
Heure de fin flexible de la période. 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 : |
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. 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 Ce coût doit être positif. Le champ ne peut être défini que si |
Véhicule
Modélise un véhicule dans un problème de livraison. La résolution d'un problème de livraison créera un itinéraire commençant à startLocation et se terminant à endLocation 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 déplacement qui affecte les routes utilisables par le véhicule et sa vitesse. Voir aussi |
routeModifiers |
Ensemble de conditions à remplir qui affectent la façon dont les itinéraires sont calculés pour le véhicule concerné. |
startLocation |
Emplacement géographique où le véhicule démarre avant de récupérer des colis. Si aucune heure n'est spécifiée, le véhicule commence son trajet à son premier point de collecte. Si le modèle d'expédition comporte des matrices de durée et de distance, |
startWaypoint |
Point de cheminement représentant un emplacement géographique où le véhicule commence son trajet avant de récupérer des colis. Si ni |
endLocation |
Emplacement géographique où le véhicule se trouve après avoir terminé sa dernière |
endWaypoint |
Point de cheminement représentant un emplacement géographique où le véhicule se termine après avoir effectué sa dernière |
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 associés à la fin de l'itinéraire du véhicule. Les chaînes vides ou en double ne sont pas autorisées. |
startTimeWindows[] |
Plages horaires pendant lesquelles le véhicule peut quitter son point de départ. Elles doivent respecter les limites de temps globales (voir les champs Les périodes appartenant au même champ répété doivent être disjointes, c'est-à-dire qu'aucune période ne peut chevaucher une autre ni être adjacente à une autre, et elles doivent être dans l'ordre chronologique.
|
endTimeWindows[] |
Plages horaires pendant lesquelles le véhicule peut arriver à sa destination finale. Elles doivent respecter les limites de temps globales (voir les champs Les périodes appartenant au même champ répété doivent être disjointes, c'est-à-dire qu'aucune période ne peut chevaucher une autre ni être adjacente à une autre, et elles doivent être 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 charge, conformément aux clés du champ |
costPerHour |
Coûts du véhicule : tous les coûts s'additionnent et doivent être exprimés dans la même unité que Coût par heure de l'itinéraire du véhicule. Ce coût est appliqué à la durée totale de l'itinéraire et inclut le temps de trajet, le temps d'attente et le temps de visite. L'utilisation de |
costPerTraveledHour |
Coût par heure de trajet de l'itinéraire du véhicule. Ce coût ne s'applique qu'au temps de trajet de l'itinéraire (c'est-à-dire celui indiqué dans |
costPerKilometer |
Coût par kilomètre de l'itinéraire du véhicule. Ce coût s'applique à la distance indiquée dans |
fixedCost |
Coût fixe appliqué si ce véhicule est utilisé pour gérer un envoi. |
usedIfRouteIsEmpty |
Ce champ ne s'applique aux véhicules que lorsque leur itinéraire ne dessert aucune expédition. Indique si le véhicule doit être considéré comme d'occasion ou non dans ce cas. Si la valeur est "true", le véhicule se déplace de son point de départ à son point d'arrivée, même s'il n'effectue aucune livraison. Les coûts de temps et de distance résultant de son trajet de départ à arrivée sont pris en compte. Sinon, il ne se déplace pas de son point de départ à son point d'arrivée, et aucun |
routeDurationLimit |
Limite appliquée à la durée totale de l'itinéraire du véhicule. Dans un |
travelDurationLimit |
Limite appliquée à la durée du trajet du véhicule. Dans un |
routeDistanceLimit |
Limite appliquée à la distance totale de l'itinéraire du véhicule. Dans un |
extraVisitDurationForVisitType |
Spécifie un mappage des chaînes visitTypes vers les durées. La durée correspond au temps supplémentaire à ajouter à Si une demande de visite comporte plusieurs types, une durée sera ajoutée pour chacun d'eux sur la carte. |
breakRule |
Décrit le programme de pause à appliquer à ce véhicule. Si ce champ est vide, aucune pause n'est prévue pour ce véhicule. |
label |
Spécifie un libellé pour ce véhicule. Ce libellé est indiqué dans la réponse en tant que |
ignore |
Si la valeur est "true", Si une livraison 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 qui peut être utilisé pour augmenter ou diminuer les temps de trajet de ce véhicule. Par exemple, si vous définissez cette valeur sur 2,0, cela signifie que ce véhicule est plus lent et que ses temps de trajet sont deux fois plus longs que ceux des véhicules standards. Ce multiple n'a pas d'incidence sur la durée des visites. Elle a une incidence sur les coûts si AVERTISSEMENT : Les temps de trajet seront arrondis à la seconde la plus proche après l'application de ce multiple, mais avant toute opération numérique. Par conséquent, un petit multiple peut entraîner une perte de précision. Voir également |
TravelMode
Modes de transport pouvant être utilisés par les véhicules.
Il doit s'agir d'un sous-ensemble des modes de déplacement de l'API Routes Google Maps Platform. Pour en savoir plus, consultez https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode.
Remarque : Les itinéraires WALKING sont en version bêta et peuvent parfois ne pas inclure de trottoirs ou de voies piétonnes clairs. Vous devez afficher cet avertissement à l'utilisateur pour tous les itinéraires à pied que vous affichez dans votre application.
| Enums | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
Mode de transport non spécifié, équivalent à DRIVING. |
DRIVING |
Mode de transport correspondant aux itinéraires en voiture (voiture, etc.). |
WALKING |
Mode de transport correspondant aux itinéraires à pied. |
RouteModifiers
Encapsule un ensemble de conditions facultatives à respecter lors du calcul des itinéraires de véhicules. Cela est semblable à RouteModifiers dans l'API Routes Preferred Google Maps Platform. Pour en savoir plus, consultez https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| Représentation JSON |
|---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
| Champs | |
|---|---|
avoidTolls |
Indique s'il faut éviter les routes à péage dans la mesure du possible. La préférence sera donnée aux itinéraires ne comportant pas de routes à péage. Ne s'applique qu'aux modes de déplacement motorisés. |
avoidHighways |
Indique s'il faut éviter les autoroutes lorsque cela est raisonnable. La préférence sera donnée aux itinéraires ne contenant pas d'autoroutes. Ne s'applique qu'aux modes de déplacement motorisés. |
avoidFerries |
Indique s'il faut éviter les ferries lorsque cela est raisonnable. La préférence sera donnée aux itinéraires ne comportant pas de trajet en ferry. Ne s'applique qu'aux modes de déplacement motorisés. |
avoidIndoor |
Facultatif. Indique s'il faut éviter la navigation en intérieur lorsque cela est possible. La priorité sera donnée aux itinéraires ne contenant pas de navigation en intérieur. Ne s'applique qu'au mode de déplacement |
UnloadingPolicy
Règles concernant le déchargement d'un véhicule. Ne s'applique qu'aux expéditions avec retrait et livraison.
Les autres livraisons peuvent avoir lieu n'importe où sur l'itinéraire, indépendamment de unloadingPolicy.
| Enums | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
Règle de déchargement non spécifiée : les livraisons doivent simplement avoir lieu après les collectes correspondantes. |
LAST_IN_FIRST_OUT |
Les livraisons doivent avoir lieu dans l'ordre inverse des collectes. |
FIRST_IN_FIRST_OUT |
Les livraisons doivent avoir lieu dans le même ordre que les collectes. |
LoadLimit
Définit une limite de charge s'appliquant à un véhicule, par exemple "ce camion ne peut transporter que 3 500 kg maximum". Consultez les loadLimits.
| Représentation JSON |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| Champs | |
|---|---|
softMaxLoad |
Limite souple de la charge. Consultez les |
costPerUnitAboveSoftMax |
Si la charge dépasse |
startLoadInterval |
Intervalle de charge acceptable du véhicule au début du trajet. |
endLoadInterval |
Intervalle de chargement acceptable du véhicule à la fin de l'itinéraire. |
maxLoad |
Charge maximale acceptable. |
costPerKilometer |
Coût du déplacement d'une unité de charge sur un kilomètre pour ce véhicule. Cela peut être utilisé comme proxy pour la consommation de carburant : si la charge est un poids (en Newtons), alors charge*kilomètre a la dimension d'une énergie. Expérimental : pour en savoir plus, consultez https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
costPerTraveledHour |
Coût du transport d'une unité de charge pendant une heure pour ce véhicule. Expérimental : pour en savoir plus, consultez https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request. |
Intervalle
Intervalle de montants de charge acceptables.
| Représentation JSON |
|---|
{ "min": string, "max": string } |
| Champs | |
|---|---|
min |
Une charge minimale acceptable. Doit être ≥ 0. Si les deux sont spécifiés, |
max |
une charge maximale acceptable. Doit être ≥ 0. Si elle n'est pas spécifiée, la charge maximale n'est pas limitée par ce message. Si les deux sont spécifiés, |
LoadCost
Coût du déplacement d'une unité de charge pendant une Transition. Pour une charge donnée, le coût correspond à la somme de deux parties :
- min(charge,
loadThreshold) *costPerUnitBelowThreshold - max(0, charge –
loadThreshold) *costPerUnitAboveThreshold
Avec ce coût, les solutions préfèrent répondre d'abord aux demandes élevées ou, de manière équivalente, les récupérer en dernier. Par exemple, si un véhicule a
load_limit {
key: "weight"
value {
costPerKilometer {
loadThreshold: 15
costPerUnitBelowThreshold: 2.0
costPerUnitAboveThreshold: 10.0
}
}
}
et son itinéraire est start,pickup,pickup,delivery,delivery,end avec les transitions suivantes :
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
Le coût engendré par ce LoadCost est alors (cost_below * load_below * kilometers + cost_above * load_above * kms).
- transition 0 : 0,0
- transition 1 : 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 2 : 2,0 * 15 * 1,0 + 10,0 * (20 - 15) * 1,0 = 80,0
- transition 3 : 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 4 : 0.0
La valeur LoadCost pour l'itinéraire est donc de 120,0.
Toutefois, si l'itinéraire est "start,pickup,delivery,pickup,delivery,end" (départ, retrait, livraison, retrait, livraison, arrivée) avec des transitions :
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
Le coût engendré par ce LoadCost est alors
- transition 0 : 0,0
- transition 1 : 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 2 : 0.0
- transition 3 : 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- transition 4 : 0.0
Ici, la LoadCost sur l'itinéraire est de 40,0.
LoadCost rend les solutions avec des transitions fortement chargées plus coûteuses.
Expérimental : pour en savoir plus, consultez https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request.
| Représentation JSON |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| Champs | |
|---|---|
loadThreshold |
Quantité de charge au-dessus de laquelle le coût du déplacement d'une unité de charge passe de costPerUnitBelowThreshold à costPerUnitAboveThreshold. Doit être supérieur ou égal à 0. |
costPerUnitBelowThreshold |
Coût du déplacement d'une unité de charge, pour chaque unité entre 0 et le seuil. Doit être une valeur finie et supérieure ou égale à 0. |
costPerUnitAboveThreshold |
Coût du déplacement d'une unité de charge, pour chaque unité au-dessus du seuil. Dans le cas particulier où le seuil est égal à 0, il s'agit d'un coût fixe par unité. Doit être une valeur finie et supérieure ou égale à 0. |
DurationLimit
Limite définissant la durée maximale de l'itinéraire d'un véhicule. Il peut être dur ou mou.
Lorsqu'un champ de limite flexible est défini, le seuil maximal flexible et le 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 qui contraint la durée à être au maximum maxDuration. |
softMaxDuration |
Il s'agit d'une limite souple qui n'impose pas de durée maximale, mais qui entraîne un coût pour l'itinéraire en cas de dépassement. Ce coût s'ajoute aux autres coûts définis dans le modèle, avec la même unité. Si elle est définie, |
quadraticSoftMaxDuration |
Une limite souple qui n'impose pas de durée maximale, mais qui, en cas de non-respect, entraîne un coût pour l'itinéraire, quadratique en fonction de la durée. Ce coût s'ajoute aux autres coûts définis dans le modèle, avec la même unité. Si
|
costPerHourAfterSoftMax |
Coût par heure encouru si le seuil Le coût ne doit pas être négatif. |
costPerSquareHourAfterQuadraticSoftMax |
Coût par heure carrée encouru si le seuil Le coût supplémentaire est de 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 une distance maximale pouvant être parcourue. Il peut être dur ou mou.
Si une limite flexible est définie, softMaxMeters et costPerKilometerAboveSoftMax doivent être définis et non négatifs.
| Représentation JSON |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| Champs | |
|---|---|
maxMeters |
Limite stricte contraignant la distance à être au maximum égale à maxMeters. La limite ne doit pas être négative. |
softMaxMeters |
Il s'agit d'une limite souple qui n'impose pas de distance maximale, mais qui, en cas de non-respect, entraîne un coût qui s'ajoute aux autres coûts définis dans le modèle, avec la même unité. Si softMaxMeters est défini, il doit être inférieur à maxMeters et non négatif. |
costPerKilometerBelowSoftMax |
Coût par kilomètre encouru, jusqu'à Ce coût n'est pas accepté dans |
costPerKilometerAboveSoftMax |
Coût par kilomètre encouru si la distance dépasse la limite Le coût ne doit pas être négatif. |
BreakRule
Règles permettant de 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 à l'arrêt à sa position actuelle et ne peut effectuer aucune visite. Une pause peut se produire :
- pendant le trajet entre deux visites (y compris juste avant ou juste après 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 (le véhicule peut ne pas démarrer au milieu d'une pause), auquel cas cela n'affecte pas l'heure de démarrage du véhicule.
- ou après la fin du véhicule (idem, avec l'heure de fin du véhicule).
| Représentation JSON |
|---|
{ "breakRequests": [ { object ( |
| Champs | |
|---|---|
breakRequests[] |
Séquence de pauses. Consultez le message |
frequencyConstraints[] |
Plusieurs |
BreakRequest
La séquence des pauses (c'est-à-dire leur nombre et leur ordre) qui s'applique à chaque véhicule doit être connue à l'avance. Les BreakRequest répétés définissent cette séquence, dans l'ordre dans lequel ils doivent se produire. Leurs plages horaires (earliestStartTime / latestStartTime) peuvent se chevaucher, mais elles doivent être compatibles avec l'ordre (cette compatibilité est vérifiée).
| Représentation JSON |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| Champs | |
|---|---|
earliestStartTime |
Obligatoire. Limite inférieure (incluse) du début de la pause. 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 : |
latestStartTime |
Obligatoire. Limite supérieure (incluse) du début de la pause. 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 : |
minDuration |
Obligatoire. Durée minimale de la pause. Doit être positive. |
FrequencyConstraint
Il est possible de limiter davantage la fréquence et la durée des pauses spécifiées ci-dessus en imposant une fréquence de pause minimale, par exemple "Il doit y avoir une pause d'au moins une heure toutes les 12 heures". En partant du principe que cela peut être interprété comme "Dans n'importe quelle période de 12 heures, il doit y avoir au moins une pause d'au moins une heure", cet exemple se traduirait par le FrequencyConstraint suivant :
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
La durée et le moment des pauses dans la solution respecteront toutes ces contraintes, en plus des créneaux horaires et des durées minimales déjà spécifiés dans le BreakRequest.
En pratique, un FrequencyConstraint peut s'appliquer à des pauses 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 pause pour cette contrainte. Non négatif. Lisez la description de |
maxInterBreakDuration |
Obligatoire. Durée maximale autorisée pour tout intervalle de temps dans l'itinéraire qui n'inclut pas au moins partiellement une pause de |
Objectif
Les objectifs remplacent complètement le modèle de coût et sont donc incompatibles avec les coûts préexistants. Chaque objectif correspond à un certain nombre de coûts prédéfinis pour, par exemple, les attributs de véhicules, d'expéditions ou de transitions.
Expérimental : pour en savoir plus, consultez https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request.
| Représentation JSON |
|---|
{
"type": enum ( |
| Champs | |
|---|---|
type |
Type d'objectif. |
weight |
Pondération de cet objectif par rapport aux autres. Il peut s'agir de n'importe quel nombre non négatif. Les pondérations ne doivent pas nécessairement être égales à 1. Les pondérations sont définies sur 1.0 par défaut. |
Type
Type d'objectif qui sera associé à un ensemble de coûts.
| Enums | |
|---|---|
DEFAULT |
Un ensemble de coûts par défaut sera utilisé pour garantir une solution raisonnable. Remarque : Cet objectif peut être utilisé seul, mais il sera également toujours ajouté avec un poids de 1.0, comme référence, aux objectifs spécifiés par l'utilisateur, s'il n'est pas déjà présent. |
MIN_DISTANCE |
Objectifs "MIN" Minimisez la distance totale parcourue. |
MIN_WORKING_TIME |
Minimisez le temps de travail total, cumulé pour tous les véhicules. |
MIN_TRAVEL_TIME |
Identique à ce qui précède, mais en se concentrant uniquement sur le temps de trajet. |
MIN_NUM_VEHICLES |
Limitez le nombre de véhicules utilisés. |
DurationDistanceMatrix
Spécifie une matrice de durée et de distance entre les lieux de départ et d'arrivée des visites et 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 |
Tag définissant les véhicules auxquels s'applique cette matrice des distances et des durées. Si ce champ est vide, cela s'applique à tous les véhicules et il ne peut y avoir qu'une seule matrice. Chaque démarrage de véhicule doit correspondre à une seule matrice. Autrement dit, exactement un de ses champs Toutes les matrices doivent avoir un |
Ligne
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 |
meters[] |
Valeurs de distance pour une ligne donnée. Si aucun coût ni aucune contrainte ne fait référence à des distances dans le modèle, ce champ peut être laissé vide. Sinon, 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 "ET").
| Représentation JSON |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| Champs | |
|---|---|
srcTag |
Tags définissant l'ensemble des transitions (src->dst) auxquelles ces attributs s'appliquent. Une visite de source ou un démarrage de véhicule correspondent si leur |
excludedSrcTag |
Consultez les |
dstTag |
Une visite de destination ou une fin de trajet du véhicule correspondent si leur |
excludedDstTag |
Consultez les |
cost |
Spécifie un coût pour effectuer 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 par kilomètre appliqué à la distance parcourue lors de cette transition. Il s'ajoute à tout |
distanceLimit |
Spécifie une limite de distance parcourue lors de cette transition. Depuis le 06/2021, seules les limites souples sont acceptées. |
delay |
Spécifie un délai lors de l'exécution de cette transition. Ce délai se produit toujours après la fin de la visite source et avant le début de la visite de destination. |
ShipmentTypeIncompatibility
Spécifie les incompatibilités entre les expéditions en fonction de leur shipmentType. L'affichage des expéditions incompatibles sur le 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 expéditions ayant des |
incompatibilityMode |
Mode appliqué à l'incompatibilité. |
IncompatibilityMode
Modes définissant la façon dont l'apparence des colis incompatibles est limitée 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 expéditions de types incompatibles ne peuvent jamais partager le même véhicule. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
Dans ce mode, deux expéditions de types incompatibles ne peuvent jamais se trouver dans le même véhicule en même temps :
|
ShipmentTypeRequirement
Spécifie les exigences entre les expéditions en fonction de leur shipmentType. 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 types d'expédition alternatifs requis par |
dependentShipmentTypes[] |
Tous les envois dont le type est indiqué dans le champ REMARQUE : Les chaînes d'exigences telles qu'une |
requirementMode |
Mode appliqué à l'exigence. |
RequirementMode
Modes définissant l'apparence des expéditions dépendantes sur un itinéraire.
| Enums | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
Mode de critère 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 de leurs envois "requis". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
Avec le mode Un enlèvement d'expédition "dépendante" doit donc avoir :
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
Comme précédemment, sauf que les expéditions "dépendantes" doivent avoir une expédition "requise" sur leur véhicule au moment de leur livraison. |
PrecedenceRule
Règle de précédence entre deux événements (chaque événement correspond à l'enlèvement ou à la livraison d'un colis) : le "second" événement doit commencer au moins offsetDuration après le début du "premier".
Plusieurs précédences peuvent faire référence aux mêmes événements (ou à des événements associés). Par exemple, "la prise en charge de B a lieu après la livraison de A" et "la prise en charge de C a lieu après la prise en charge de B".
De plus, les précédences ne s'appliquent que lorsque les deux expéditions sont effectuées. Dans le cas contraire, elles sont 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 livraison. |
secondIsDelivery |
Indique si le deuxième événement est une distribution. |
offsetDuration |
Décalage entre le premier et le deuxième événement. Elle peut être négative. |
firstIndex |
Index de l'expédition du premier événement. Ce champ doit être spécifié. |
secondIndex |
Index de l'expédition de l'événement "second". Ce champ doit être spécifié. |