Comme décrit brièvement dans la Présentation de l'optimisation des routes, une requête de base se compose d'un modèle, d'un envoi et d'un véhicule en tant qu'entités requises:
- Un modèle 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. - Les véhicules représentent des véhicules, des conducteurs ou du personnel. Les véhicules ont également des paramètres et contraintes 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 à l'échelle du modèle sont appliquées à tous les expéditions et véhicules, tandis que les contraintes et les propriétés spécifiées sur les expéditions ou les véhicules sont spécifiques à une seule expédition 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).
OptimizeToursRequest
de propriétés
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 respecte les 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 direct 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 routage sont renvoyées 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épart la plus proche pour l'ensemble des véhicules et des livraisons. Aucun véhicule ne peut commencer ses premières transitions et expéditions avant cette date.globalEndTime
représente la dernière heure de fin des itinéraires pour l'ensemble des véhicules et des livraisons. Toutes les expéditions et transitions attribuées doivent être terminées avant cette date.
Propriétés de livraison
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 puisse finaliser un envoi. 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 le chargement, consultez l'article Demandes et limites de chargement.penalty_cost
représente le coût facturé si une livraison 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 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'emplacement de la première livraison qui lui a été attribuée.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 attribuée.startTimeWindows[]
représente le moment où un véhicule peut prendre son itinéraire. Cette propriété est facultative.endTimeWindows[]
représente les heures de début et de fin de son trajet pour un véhicule. Ces deux propriétés sont facultatives.loadLimits
représente la capacité disponible du véhicule pour répondre aux besoins de charge des expéditions. Pour en savoir plus sur les exigences et les limites de charge, consultez la section Exigences et limites de chargement.
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 les messages de requête comme dans l'exemple ci-dessus, mais de manière différente. Avant d'effectuer une requête d'optimisation des routes, il est important de comprendre la différence entre les deux méthodes: