Comme décrit brièvement dans la section Présentation de l'optimisation des itinéraires, une requête de base est constituée de Model, Shipments (Expéditions) et Vehicles (Véhicules) en tant qu'entités obligatoires:
- Le modèle capture les paramètres et les contraintes pour l'ensemble de la requête, y compris
Shipments
etVehicles
. - Les expéditions représentent des tâches ou des livraisons réelles qui incluent des
VisitRequest
pour le retrait et la livraison. Des contraintes et des paramètres locaux s'appliquent aux expéditions. - Les véhicules représentent les véhicules, les conducteurs ou le personnel. Les véhicules sont également soumis à des contraintes et à un cadre locaux.
Les propriétés de chaque entité décrivent une partie d'un problème d'optimisation à un niveau de précision particulier. Les contraintes applicables à l'ensemble du modèle sont appliquées à l'ensemble des expéditions et des véhicules, tandis que les contraintes et les propriétés spécifiées pour les expéditions ou les véhicules sont spécifiques à une seule livraison ou à un seul véhicule.
Pour obtenir une documentation complète sur chaque type de message, consultez la documentation de référence sur les messages ShipmentModel
(REST, gRPC), Shipment
(REST, gRPC) et Vehicle
(REST, gRPC).
OptimzeToursRequest
de propriétés
Voici quelques propriétés couramment utilisées pour le message OptimizeToursRequest
de premier niveau (REST, gRPC) :
searchMode
indique s'il faut renvoyer la première solution qui répond aux contraintes spécifiées ou s'il faut trouver la meilleure solution possible dans un délai défini.considerRoadTraffic
détermine si le trafic en temps réel est utilisé ou non pour le calcul d'itinéraire et l'estimation de l'heure d'arrivée prévue.populateTransitionPolylines
détermine si les polylignes d'itinéraire sont renvoyées ou non dans la réponse.
Propriétés du modèle
Voici quelques propriétés couramment utilisées dans le message ShipmentModel
(REST, gRPC) :
globalStartTime
représente l'heure de départ au plus tôt des itinéraires pour tous les véhicules et toutes les livraisons. Aucun véhicule ne peut lancer ses premières transitions et expéditions avant cette heure.globalEndTime
représente l'heure de fin la plus tardive des itinéraires pour tous les véhicules et livraisons. Tous les envois et transitions attribués doivent être terminés avant cette date.
Propriétés de livraison
Voici quelques propriétés couramment utilisées pour le message Shipment
(REST, gRPC) :
pickups[]
etdeliveries[]
représentent l'endroit où un envoi peut être retiré ou déposé. Les propriétéspickups[]
etdeliveries[]
utilisent toutes deux le messageVisitRequest
(REST, gRPC).- Les
loadDemands
représentent la charge requise pour qu'un véhicule puisse effectuer une expédition. La propriétéload_limits
(REST, gRPC) correspondante d'un véhicule représente la charge qu'un véhicule peut supporter en une seule fois. Pour en savoir plus sur la charge, consultez l'article Demandes et limites de charge. penalty_cost
représente les frais facturés si une expédition est ignorée. Pour en savoir plus sur les coûts, consultez la page Paramètres du modèle de coût.
Propriétés du véhicule
Voici quelques propriétés couramment utilisées pour le message Vehicle
(REST, gRPC) :
startLocation
représente le point de départ d'un véhicule. Cette propriété est facultative. S'il n'est pas spécifié, l'itinéraire du véhicule commence à l'adresse du premier envoi qui lui a été attribué.endLocation
représente l'endroit où un véhicule doit terminer son itinéraire. Cette propriété est facultative. S'il n'est pas spécifié, l'itinéraire du véhicule se termine à l'emplacement de la dernière livraison qui lui a été attribuée.startTimeWindows[]
représente le moment où un véhicule peut démarrer son itinéraire. Cette propriété est facultative.endTimeWindows[]
représente le moment où un véhicule peut commencer et terminer son itinéraire. Ces deux propriétés sont facultatives.loadLimits
représente la capacité du véhicule disponible pour répondre aux demandes de chargement des colis. Consultez la section Demandes et limites de charge pour en savoir plus sur les demandes et les limites de charge.
Voici un exemple complet de requête au format JSON:
{
"model": {
"shipments": [
{
"pickups": [
{
"arrivalLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
}
}
],
"deliveries": [
{
"arrivalLocation": {
"latitude": 37.79581,
"longitude": -122.4218856
}
}
]
}
],
"vehicles": [
{
"startLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"endLocation": {
"latitude": 37.73881799999999,
"longitude": -122.4161
},
"costPerKilometer": 1.0
}
],
"globalStartTime": "2024-02-13T00:00:00.000Z",
"globalEndTime": "2024-02-14T06:00:00.000Z"
}
}
OptimizeTours
et BatchOptimizeTours
consomment tous deux des messages de requête comme dans l'exemple ci-dessus, mais de différentes manières. Avant d'envoyer une requête d'optimisation des routes, il est important de comprendre la différence entre les deux méthodes: