Par défaut, les véhicules peuvent arriver à un lieu de prise en charge 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 niveau du lieu de la visite, ce qui peut être difficile, voire impossible, en raison de la taille du véhicule, des panneaux de signalisation sur place 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 prise en charge 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 repart de l'emplacement avec le même cap, ce qui évite le demi-tour. Sur les routes à double sens, le solveur prendra en compte les deux sens de circulation et en choisira un dans le cadre 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 repart 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. Il est possible de définir side_of_road
et avoid_u_turns
sur "true" pour obtenir le même résultat. Pour en savoir plus, consultez 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 repère. Utilisez side_of_road
lorsque la traversée est déconseillée 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 gRPC.
Avant d'envoyer une requête, remplacez les paramètres suivants par des valeurs adaptées à votre environnement :
- Assurez-vous d'avoir configuré les identifiants par défaut de l'application comme décrit dans 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 demande traitée, vous recevrez un message de réponse.
Interaction avec d'autres fonctionnalités
avoid_u_turns
peut être utilisé avecside_of_road = true
. Dans ce cas, les demi-tours sont évités, mais le solveur sélectionne un itinéraire où le véhicule se trouve du même côté de la route que le point de repère, comme si vous aviez définiside_of_road = true
seul.- Lorsque
avoid_u_turns = true
pour une demande de visite donnée, le champinjected_solution_location_token
est défini dans leShipmentRoute.Visit
de la réponse correspondante. La 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.Visit
dans la requête d'entrée, si ceShipmentRoute.Visit
correspond à unVisitRequest
dans lequelavoid_u_turns = true
, alorsShipmentRoute.Visit
doit contenir uninjected_solution_location_token
précédemment renvoyé par le solveur.
Limites
L'évitement des demi-tours est une fonctionnalité optimale. Dans certains cas, l'itinéraire peut toujours contenir des demi-tours :
avoid_u_turns
ne fonctionne qu'avec les modes de déplacement compatibles avecside_of_road
. Plus précisément, il n'est pas compatible avec le mode de déplacementWALKING
.avoid_u_turns
ne peut pas être utilisé pour les collectes et les livraisons dont les lieux d'arrivée et de départ sont différents.- Lorsqu'un retrait ou une livraison se trouve sur une route en impasse, il est nécessaire de faire demi-tour pour quitter la route.
- L'objectif de cette fonctionnalité est d'éviter les demi-tours aux lieux 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 seront généralement pas évités.
D'autres limites s'appliquent pendant le développement de cette fonctionnalité. Nous prévoyons de les lever à mesure que la fonctionnalité évoluera.
avoid_u_turns
ne peut pas être utilisé avecinterpret_injected_solutions_using_labels
.