Comme décrit brièvement dans Présentation de l'optimisation des itinéraires, une requête de base se compose des entités requises Model, Shipments et Vehicles :
- Model capture les paramètres et les contraintes pour l'ensemble de la requête, y compris
Shipments
etVehicles
. - Les envois représentent des tâches ou des envois réels qui incluent des
VisitRequest
de collecte et de livraison. Les expéditions sont soumises à des paramètres et des contraintes locales. - Les véhicules représentent 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 précision spécifique. Les contraintes à l'échelle du modèle s'appliquent à tous les envois et véhicules, tandis que les contraintes et les propriétés spécifiées pour 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-unes des propriétés couramment utilisées du message OptimizeToursRequest
de premier niveau (REST, gRPC) :
searchMode
indique s'il faut renvoyer la première solution qui satisfait les contraintes spécifiées ou trouver la meilleure solution possible dans un délai donné.considerRoadTraffic
détermine si le trafic en temps réel est utilisé ou non pour le calcul de l'itinéraire et de l'heure d'arrivée prévue.populateTransitionPolylines
détermine si les polylignes et les jetons de route sont renvoyés 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 tôt des itinéraires pour tous les véhicules et expéditions. Aucun véhicule ne peut commencer 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 toutes les expéditions. Tous les envois et transitions attribués doivent être terminés avant cette heure.
Propriétés de l'envoi
Voici quelques propriétés couramment utilisées du message Shipment
(REST, gRPC) :
pickups[]
etdeliveries[]
indiquent où un colis peut être retiré ou déposé. Les propriétéspickups[]
etdeliveries[]
utilisent toutes les 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) des véhicules correspondants représente la charge qu'un véhicule peut supporter à la fois. Pour en savoir plus sur la charge, consultez Demandes et limites de charge.penalty_cost
représente le coût encouru si un envoi est ignoré. Pour en savoir plus sur les coûts, consultez Paramètres du modèle de coûts.
Propriétés du véhicule
Voici quelques propriétés couramment utilisées du message Vehicle
(REST, gRPC) :
startLocation
indique l'endroit où un véhicule doit commencer son trajet. Cette propriété est facultative. Si elle n'est pas spécifiée, l'itinéraire du véhicule commence à l'emplacement de son premier envoi attribué.endLocation
indique 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 sa dernière expédition attribuée.startTimeWindows[]
représente le moment où un véhicule peut commencer son trajet. Cette propriété est facultative.endTimeWindows[]
représente le début et la fin de l'itinéraire d'un véhicule. Ces deux propriétés sont facultatives.loadLimits
représente la capacité du véhicule disponible pour répondre aux besoins de chargement des expéditions. 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 d'itinéraire, il est important de comprendre la différence entre les deux méthodes :
Comparaison entre OptimizeTours et BatchOptimizeTours