Par défaut, les véhicules peuvent arriver à un point de collecte ou de livraison depuis n'importe quelle direction, puis repartir dans n'importe quelle direction. Dans certains cas, cela oblige le véhicule à faire demi-tour au lieu de la visite, ce qui peut être difficile ou impossible en raison de la taille du véhicule, des panneaux de signalisation sur le site ou des conditions de circulation habituelles.
Pour empêcher les véhicules de changer de direction entre l'arrivée et le départ pour un lieu de retrait ou de livraison donné, vous pouvez définir avoid_u_turns sur "true" pour ce lieu. Avec ce paramètre, le véhicule arrive et quitte l'emplacement avec le même cap, ce qui évite le demi-tour. Sur les routes à double sens, le solveur tient compte des deux sens de circulation et en choisit un lors de l'optimisation de l'itinéraire.
Vous pouvez également définir side_of_road sur "true" pour obtenir un itinéraire où le véhicule arrive et part du côté de la route le plus proche du point de cheminement. Dans ce cas, le véhicule ne change pas non plus de cap entre l'arrivée et le départ. Vous pouvez définir side_of_road et avoid_u_turns sur "true" pour obtenir le même résultat. Pour en savoir plus, consultez la section Interaction avec d'autres fonctionnalités.
En pratique, avoid_u_turns doit être utilisé lorsqu'il est possible de traverser la route pour atteindre le point de cheminement. Utilisez side_of_road lorsque le passage est déconseillé ou impossible.
Exemple: Envoyer une requête OptimizeTours avec avoid_u_turns
Les requêtes OptimizeTours peuvent être effectuées à l'aide de REST ou de gRPC.
Avant d'envoyer une requête, remplacez les paramètres suivants par les valeurs appropriées pour votre environnement:
- Assurez-vous que les identifiants par défaut de l'application sont configurés comme décrit dans la section Utiliser OAuth.
Définissez PROJECT_NUMBER_OR_ID sur le numéro ou l'ID de votre projet Cloud.
La commande suivante envoie une requête
OptimizeToursà l'API Route Optimization et reçoit une réponse de manière synchrone.curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data @- <<EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ], } } EOM
Une fois la requête traitée, vous recevrez un message de réponse.
Interaction avec d'autres fonctionnalités
avoid_u_turnspeut être utilisé avecside_of_road = true. Dans ce cas, les demi-tours sont évités, mais le solveur sélectionne un itinéraire pour lequel le véhicule se trouve du même côté de la route que le point de cheminement, comme si vous ne définissiez queside_of_road = true.- Lorsque
avoid_u_turns = truepour une requête de visite spécifique, le champinjected_solution_location_tokenest défini dans la réponse correspondante.ShipmentRoute.VisitLa signification précise de sa valeur est un détail d'implémentation, mais elle encode les informations sur le côté de la route choisi par le solveur. - Lorsque vous utilisez un
ShipmentRoute.Visitdans la requête d'entrée, si cet élémentShipmentRoute.Visitcorrespond à unVisitRequestdans lequelavoid_u_turns = true,ShipmentRoute.Visitdoit contenir uninjected_solution_location_tokenprécédemment renvoyé par le solveur.
Limites
L'évitement des demi-tours est réalisé de manière optimale. Dans certains cas, l'itinéraire peut toujours comporter des demi-tours:
avoid_u_turnsne fonctionne qu'avec les modes de transport compatibles avecside_of_road. Plus précisément, il n'est pas compatible avec le mode de déplacementWALKING.avoid_u_turnsne peut pas être utilisé pour les collectes et les livraisons où l'arrivée et le départ ne sont pas identiques.- Lorsqu'une collecte ou une livraison se trouve sur une route sans issue, vous devez faire demi-tour pour quitter la route.
- L'objectif de cette fonctionnalité est d'éviter les demi-tours aux points de prise en charge et de livraison. Les demi-tours entre les points de cheminement ne sont pas évités.
- Les virages très serrés vers une autre route ne sont pas considérés comme des demi-tours et ne sont généralement pas évités.
Cette fonctionnalité est en cours de développement et présente d'autres limites. Nous nous attendons à ce qu'elles soient levées à mesure que la fonctionnalité évoluera.
avoid_u_turnsne peut pas être utilisé avecinterpret_injected_solutions_using_labels.