L'objectif de l'API Route Optimization est de planifier des itinéraires pour une flotte de véhicules afin qu'ils visitent un ensemble d'établissements. L'objet OptimizeToursRequest
décrit les propriétés de ces véhicules et de ces emplacements. Il constitue la structure principale du corps de la requête de chaque point de terminaison.
La structure de base de l'objet OptimizeToursRequest
est la suivante:
- Le champ
model
contient un messageShipmentModel
qui contient deux champs clés :
Ce document décrit les types de messages suivants:
ShipmentModel
:contient la liste des expéditions, des véhicules disponibles et d'autres objets qui décrivent leurs relations.Shipment
:décrit les lieux à visiter par un véhicule. Ils peuvent représenter des colis réels à récupérer et à livrer ou des lieux où le conducteur du véhicule effectue un service.Vehicle
:décrit les moyens de transport entre les lieux d'expédition. Chaque véhicule correspond à un véhicule réel ou à une personne se déplaçant à pied.
ShipmentModel
ShipmentModel
contient les éléments du problème d'optimisation d'itinéraire. Il contient un ensemble d'expéditions pouvant être effectuées par un ensemble de véhicules, tout en tenant compte des contraintes et en minimisant le coût global.
Le tableau ci-dessous décrit certaines propriétés pertinentes de ShipmentModel
:
Propriétés | Description |
---|---|
shipments et vehicles |
Objets obligatoires contenant les informations d'un ou de plusieurs envois et véhicules. |
globalStartTime et globalEndTime |
Indique le début et la fin de la période pendant laquelle tous les véhicules doivent effectuer toutes les livraisons. Bien que ces propriétés ne soient pas obligatoires, nous vous recommandons de les inclure, car l'optimiseur fonctionne mieux lorsque vous respectez les contraintes temporelles. |
Pour obtenir la liste complète des propriétés de ShipmentModel
, consultez la documentation de référence.
Exemple d'utilisation de la fonction ShipmentModel
Dans cet exemple, vous gérez une garderie pour chiens et vous commencez à créer votre requête. Vous définirez les envois et les véhicules plus tard, mais vous souhaitez commencer par définir vos horaires d'ouverture et vos coûts opérationnels horaires.
Pour cet exemple, les valeurs de propriété ShipmentModel
de votre requête sont les suivantes:
Propriété | Valeur | Description |
---|---|---|
globalStartTime |
2024-02-13T00:00:00.000Z | Date et heure de début des horaires d'ouverture. |
globalEndTime |
2024-02-14T06:00:00.000Z | Date et heure de fin des horaires d'ouverture. |
Voici un exemple de code d'un message ShipmentModel
intégrant les valeurs de l'exemple de scénario.
{ "model": { "shipments": [ ... ], "vehicles": [ ... ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }
Shipment
Le type de message Shipment
définit la structure de propriété d'un envoi pouvant être livré ou d'un service pouvant être effectué sur un itinéraire.
Comme illustré dans le schéma:
- Un message
Shipment
contient toutes les informations d'un envoi ou d'un service réel. - Tous les messages
Shipment
sont spécifiés dans le champshipments
. - Le champ
shipments
contient un ou plusieurs messagesShipment
.
Un message Shipment
nécessite au moins un objet pickups
ou deliveries
.
La définition de ces objets est la suivante:
pickups
définit le lieu de prise en charge d'un envoi.deliveries
définit le lieu de livraison d'un envoi.pickups
etdeliveries
contiennent tous deux un type de messageVisitRequest
qui définit les emplacements et d'autres informations.
Le tableau suivant décrit les différents scénarios en fonction de la configuration de pickups
et deliveries
dans un message Shipment
.
Scénario | Description |
---|---|
pickups uniquement |
On suppose que vous ne récupérez que l'envoi. |
deliveries uniquement |
Nous partons du principe que vous avez préchargé l'envoi ou que vous livrez un service. |
pickups et deliveries |
Le véhicule attribué doit d'abord effectuer la collecte, puis la livraison. Seul le véhicule qui a effectué la collecte peut effectuer la livraison. |
Plusieurs pickups ou deliveries |
Si une expédition liste plusieurs possibilités pour pickups ou deliveries , l'optimiseur choisit une option de retrait et une option de livraison à utiliser, en fonction de la minimisation des coûts et de la satisfaction des contraintes. |
Pour obtenir la liste complète des propriétés de Shipment
, consultez la documentation de référence.
Exemple d'utilisation de la fonction Shipment
Dans cet exemple, vous proposez un service de garde d'animaux de compagnie. Vous récupérez les chiens à leur domicile et les amenez à votre établissement. Vous souhaitez définir le lieu de retrait de deux chiens et définir leur lieu de livraison sur votre établissement:
- La première maison pour chien se trouve à la Coit Tower, à San Francisco. Les coordonnées de cet emplacement sont la latitude 37,8024 et la longitude -122,4058.
- La maison du deuxième chien se trouve dans le South Sunset Playground Park, à San Francisco. Les coordonnées de cet emplacement sont 37,7359 degrés de latitude et -122,5011 degrés de longitude.
- Votre garderie pour chiens se trouve à Mission Dolores Park, à San Francisco. Les coordonnées de cet emplacement sont la latitude 37,759773 et la longitude -122,427063.
Voici un exemple de code d'un message Shipment
, où l'objet shipments
contient deux types de messages Shipment
avec les coordonnées d'exemple.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ ... ] } }
Vehicle
Le type de message Vehicle
définit la structure de propriété d'un véhicule pouvant effectuer un envoi dans un itinéraire.
Comme illustré dans le schéma:
- Un message
Vehicle
contient toutes les informations d'un véhicule réel. - Tous les messages
Vehicle
sont spécifiés dans le champvehicles
. - Le champ
vehicles
contient plusieurs messagesVehicle
.
Le tableau suivant décrit certaines propriétés pertinentes d'un Vehicle
.
Propriétés | Description |
---|---|
startLocation et endLocation |
Lieu de départ et d'arrivée des véhicules, qui font partie de l'itinéraire optimisé final. Si ces valeurs ne sont pas définies, elles sont définies par défaut sur les emplacements de collecte et de livraison de la première et de la dernière expédition. |
costPerHour , costPerKilometer , costPerTraveledHour |
Paramètres de coût spécifiques au véhicule. Nous vous recommandons d'inclure au moins un paramètre de coût dans votre requête pour que l'API renvoie un itinéraire optimisé. Pour en savoir plus sur les coûts, consultez le concept clé Modèle de coûts. |
startTimeWindows et endTimeWindows |
Définissez les périodes pendant lesquelles un véhicule peut circuler sur un itinéraire. Elles doivent se situer dans la période globalStartTime et globalEndTime définie dans ShipmentModel . Cette propriété n'est pas obligatoire, mais nous vous recommandons de l'inclure, car l'optimiseur fonctionne mieux lorsqu'il respecte les contraintes temporelles. |
Exemple d'utilisation de la fonction Vehicle
Dans cet exemple, vous gérez une garderie pour chiens et vous souhaitez définir l'emplacement de votre véhicule au début et à la fin de la journée, ainsi que la quantité d'essence qu'il consomme. Vous n'avez pas besoin de spécifier les heures de travail du véhicule, car elles correspondent aux heures que vous avez définies dans les propriétés globalStartTime
et globalEndTime
de l'objet ShipmentModel
.
Pour cet exemple, les valeurs de propriété Vehicle
de votre requête sont les suivantes:
Propriété | Valeur | Description |
---|---|---|
startLocation |
latitude : 37.759773, longitude : -122.427063 |
Coordonnées de départ de l'itinéraire pour votre véhicule. Ces informations correspondent à l'emplacement de votre pension canine, située à Mission Dolores Park, à San Francisco. |
endLocation |
latitude : 37.759773, longitude : -122.427063 |
Coordonnées de fin du trajet pour votre véhicule. Ces informations correspondent à l'emplacement de votre pension canine, située à Mission Dolores Park, à San Francisco. |
costPerHour |
27 | Le montant que vous payez à un conducteur pour qu'il conduise votre véhicule de garde de chien. Vous payez le chauffeur 27 $ de l'heure. |
Voici un exemple de code d'un message Vehicle
intégrant les valeurs de l'exemple de scénario.
{ "model": { "shipments": [ ... ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ] } }
Pour obtenir la liste complète des propriétés de Vehicle
, consultez la documentation de référence.
Exemple de requête complète
L'exemple de code suivant fournit un exemple de requête complet, combinant les exemples ShipmentModel
, Shipment
et Vehicle
présentés dans ce document.
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.8024, "longitude": -122.4058 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] }, { "pickups": [ { "arrivalLocation": { "latitude": 37.7359, "longitude": -122.5011 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.759773, "longitude": -122.427063 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "endLocation": { "latitude": 37.759773, "longitude": -122.427063 }, "costPerHour": 27 } ], "globalStartTime": "2024-02-13T00:00:00.000Z", "globalEndTime": "2024-02-14T06:00:00.000Z" } }