- Représentation JSON
- Accéder
<ph type="x-smartling-placeholder">
- </ph>
- Représentation JSON
- Transition
<ph type="x-smartling-placeholder">
- </ph>
- Représentation JSON
- EncodedPolyline
<ph type="x-smartling-placeholder">
- </ph>
- Représentation JSON
- Pause
<ph type="x-smartling-placeholder">
- </ph>
- Représentation JSON
L'itinéraire d'un véhicule peut être décomposé en fonction de l'axe temporel, comme ceci (nous supposons qu'il y a n visites):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
Notez que nous faisons la différence entre:
- "Événements ponctuels", tels que les heures de début et de fin du véhicule, et les heures de début et de fin de chaque visite (arrivée et départ). Elles se produisent à une seconde donnée.
- "Intervalles de temps", comme les visites elles-mêmes et la transition entre les visites Bien que les intervalles de temps puissent parfois avoir une durée nulle (c'est-à-dire qu'ils commencent et se terminent à la même seconde), ils ont souvent une durée positive.
Règles invariantes :
- S'il y a n visites, il y a n+1 transitions.
- Une visite est toujours entourée d'une transition avant (même index) et d'une transition après (index + 1).
- Le démarrage du véhicule est toujours suivi de la transition n° 0.
- La fin du véhicule est toujours précédée de la transition #n.
Voici ce qui se passe lors d'un Transition
et d'un Visit
:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
Enfin, voici comment les éléments TRAVEL, BREAKS, {8/} et WAIT peuvent être organisés lors d'une transition.
- Ils ne se chevauchent pas.
- Le délai est unique et doit correspondre à une période contiguë juste avant la prochaine visite (ou l'arrivée du véhicule). Il suffit donc de connaître la durée du délai pour connaître ses heures de début et de fin.
- Les BREAKS sont des périodes de temps qui se suivent et ne se chevauchent pas. La réponse spécifie l'heure de début et la durée de chaque coupure.
- TRAVEL et WAIT sont "préemptables" : ils peuvent être interrompus plusieurs fois au cours de cette transition. Les clients peuvent supposer que le voyage a lieu "dès que possible" et que cette "attente" remplit le temps restant.
Exemple (complexe) :
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
Représentation JSON |
---|
{ "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( |
Champs | |
---|---|
vehicleIndex |
Véhicule effectuant l'itinéraire, identifié par son indice dans la source |
vehicleLabel |
Libellé du véhicule effectuant cet itinéraire (valeur égale à |
vehicleStartTime |
Heure à laquelle le véhicule commence son trajet. Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
vehicleEndTime |
Heure à laquelle le véhicule termine son trajet. Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
visits[] |
Séquence ordonnée de visites représentant un itinéraire. visites[i] correspond à la i-ième visite de l'itinéraire. Si ce champ est vide, le véhicule est considéré comme non utilisé. |
transitions[] |
Liste numérotée des transitions pour la route. |
hasTrafficInfeasibilities |
Lorsque
L'arrivée à next_visit se produira probablement plus tard que la période actuelle, en raison de l'augmentation estimée du temps de trajet |
routePolyline |
Représentation de l'itinéraire sous forme de polyligne encodée. Ce champ n'est renseigné que si |
breaks[] |
Arrêts prévus pour le véhicule effectuant cet itinéraire. La séquence |
metrics |
Métriques de durée, de distance et de charge pour cet itinéraire. Les champs de |
routeCosts |
Coût de l'itinéraire, réparti selon les champs de requête liés aux coûts. Les clés sont des chemins proto correspondant à la requête OptimizeToursRequest d'entrée. Exemple : "model.shipments.pickups.cost", et les valeurs correspondent au coût total généré par le champ de coût correspondant, agrégé sur l'ensemble de l'itinéraire. En d'autres termes, la valeur "cost["model.shipments.pickups.cost"] correspond à la somme de tous les coûts de retrait sur l'itinéraire. Tous les coûts définis dans le modèle sont indiqués ici en détail, à l'exception des coûts liés aux TransitionAttributes, qui ne sont indiqués que de manière agrégée en date du 1er janvier 2022. Objet contenant une liste de paires |
routeTotalCost |
Coût total de l'itinéraire. Somme de tous les coûts dans la carte des coûts. |
Accéder à la page
Visite effectuée sur un itinéraire. Cette visite correspond à la prise en charge ou à la livraison d'un Shipment
.
Représentation JSON |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
Champs | |
---|---|
shipmentIndex |
Index du champ |
isPickup |
Si la valeur est "true", la visite correspond à la prise en charge d'un |
visitRequestIndex |
Index de |
startTime |
Heure de début de la visite. Notez qu'il est possible que le véhicule arrive plus tôt au lieu de la visite. Les heures sont cohérentes avec les Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
loadDemands |
Nombre total de demandes de chargement de visites, calculé comme suit : somme des livraisons et des demandes de visite ( Objet contenant une liste de paires |
detour |
Détour supplémentaire en raison du nombre de cargaisons visitées sur l'itinéraire avant la visite et du temps d'attente potentiel induit par les fenêtres de temps. Si la visite est une livraison, le détour est calculé à partir de la visite de prise en charge correspondante et est égal à:
Sinon, elle est calculée à partir du
Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par " |
shipmentLabel |
Copie du |
visitLabel |
Copie du |
Transition
Transition entre deux événements sur la route. Consultez la description de ShipmentRoute
.
Si le véhicule n'a pas de startLocation
ni de endLocation
, les métriques de trajet correspondantes sont égales à 0.
Représentation JSON |
---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
Champs | |
---|---|
travelDuration |
Durée du voyage pendant cette transition. Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par " |
travelDistanceMeters |
Distance parcourue pendant la transition. |
trafficInfoUnavailable |
Lorsque le trafic est demandé via |
delayDuration |
Somme des délais appliqués à cette transition. Le cas échéant, le délai commence exactement Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par " |
breakDuration |
Durée totale des coupures survenues pendant cette transition, le cas échéant. Les détails concernant l'heure de début et la durée de chaque coupure sont stockés dans Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par " |
waitDuration |
Temps d'attente durant cette transition. La durée d'attente correspond au temps d'inactivité et n'inclut pas le temps de pause. Notez également que ce temps d'attente peut être divisé en plusieurs intervalles non contigus. Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par " |
totalDuration |
Durée totale de la transition, indiquée pour plus de commodité. Elle est égale à:
Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par " |
startTime |
Heure de début de cette transition. Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
routePolyline |
Représentation polyligne encodée de l'itinéraire suivi pendant la transition. Ce champ n'est renseigné que si |
vehicleLoads |
Les chargements de véhicules au cours de cette transition, pour chaque type qui apparaît dans le Les chargements effectués lors de la première transition sont les chargements de départ de l'itinéraire du véhicule. Ensuite, après chaque visite, les Objet contenant une liste de paires |
EncodedPolyline
Représentation encodée d'une polyligne. Pour en savoir plus sur l'encodage des polylignes, consultez cette page: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
Représentation JSON |
---|
{ "points": string } |
Champs | |
---|---|
points |
Chaîne représentant les points encodés de la polyligne. |
Pause
Données représentant l'exécution d'une coupure.
Représentation JSON |
---|
{ "startTime": string, "duration": string } |
Champs | |
---|---|
startTime |
Heure de début de la pause. Horodatage au format RFC3339 UTC "Zulu", avec une résolution de l'ordre de la nanoseconde et jusqu'à neuf chiffres décimaux. Exemples : |
duration |
Durée d'une pause. Durée en secondes avec neuf chiffres au maximum après la virgule et se terminant par " |