Comme décrit brièvement dans la section Présentation de l'optimisation des itinéraires, une requête de base comprend les entités Modèle, Expéditions et Véhicules comme entités obligatoires:
- Model capture les paramètres et les contraintes de l'ensemble de la requête, y compris
Shipments
etVehicles
. - Expéditions représentent les tâches ou les expéditions réelles qui incluent des
VisitRequest
pour le retrait et la livraison. Les expéditions ont des paramètres et des contraintes locaux. - Véhicules : représente les véhicules, les conducteurs ou le personnel. Les véhicules disposent également de paramètres et de contraintes locaux.
Les propriétés de chaque entité décrivent une partie d'un problème d'optimisation à un niveau de granularité particulier. Les contraintes au niveau du modèle s'appliquent à tous les envois et véhicules, tandis que les contraintes et les propriétés spécifiées sur les envois ou les véhicules sont spécifiques à un seul envoi ou véhicule.
Pour obtenir une documentation complète sur chaque type de message, consultez la documentation de référence pour les messages ShipmentModel
(REST, gRPC), Shipment
(REST, gRPC) et Vehicle
(REST, gRPC).
OptimizeToursRequest
établissements
Voici quelques propriétés couramment utilisées du message OptimizeToursRequest
de niveau supérieur (REST, gRPC) :
searchMode
indique si la première solution qui répond aux contraintes spécifiées doit être renvoyée ou si la meilleure solution possible doit être trouvée dans un délai défini.considerRoadTraffic
détermine si le trafic en temps réel est utilisé ou non pour l'itinéraire et l'estimation de l'heure d'arrivée prévue.populateTransitionPolylines
détermine si les polylignes de parcours et les jetons de parcours sont renvoyés ou non dans la réponse.
Propriétés du modèle
Voici quelques propriétés couramment utilisées du message ShipmentModel
(REST, gRPC) :
globalStartTime
représente l'heure de début la plus précoce des itinéraires pour tous les véhicules et envois. Aucun véhicule ne peut commencer ses premières transitions et expéditions avant cette heure.globalEndTime
représente la dernière heure de fin des itinéraires pour tous les véhicules et tous les envois. Toutes les expéditions et transitions attribuées doivent être terminées avant cette date.
Propriétés de l'envoi
Voici quelques propriétés couramment utilisées du message Shipment
(REST, gRPC) :
pickups[]
etdeliveries[]
indiquent l'endroit où un colis peut être retiré ou déposé. Les propriétéspickups[]
etdeliveries[]
utilisent toutes deux le messageVisitRequest
(REST, gRPC).loadDemands
représente la charge requise pour qu'un véhicule effectue une livraison. La propriétéload_limits
(REST, gRPC) correspondante des véhicules représente la charge qu'un véhicule peut supporter simultanément. Pour en savoir plus sur la charge, consultez la section Demandes et limites de charge.penalty_cost
représente le coût encouru 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 du message Vehicle
(REST, gRPC) :
startLocation
représente l'emplacement où un véhicule doit commencer son itinéraire. Cette propriété est facultative. Si cette valeur n'est pas spécifiée, l'itinéraire du véhicule commence à l'emplacement de son premier envoi attribué.endLocation
représente l'endroit où un véhicule doit terminer son trajet. Cette propriété est facultative. Si ce champ n'est pas spécifié, l'itinéraire du véhicule se termine à l'emplacement de son dernier envoi attribué.startTimeWindows[]
indique le moment où un véhicule peut commencer son trajet. Cette propriété est facultative.endTimeWindows[]
indique le moment où un véhicule peut commencer et terminer son trajet. Ces deux propriétés sont facultatives.loadLimits
représente la capacité du véhicule disponible pour répondre aux demandes de charge des envois. Pour en savoir plus sur les demandes et les limites de charge, consultez Demandes et limites de charge.
Voici un exemple de requête complè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 manière différente. Avant d'envoyer une requête d'optimisation de l'itinéraire, il est important de comprendre la différence entre les deux méthodes: