De forma predeterminada, los vehículos pueden llegar a una ubicación de partida o de destino desde cualquier dirección y, luego, salir en cualquier dirección. En algunos casos, esto obliga al vehículo a dar la vuelta en la ubicación de la visita, lo que puede ser difícil o imposible debido al tamaño del vehículo, las señales de tránsito en la ubicación o las condiciones de tráfico habituales.
Para evitar que los vehículos cambien de dirección entre la llegada y la salida de una ubicación de partida o destino determinada, puedes establecer avoid_u_turns
como verdadero para esta ubicación. Con este parámetro de configuración, el vehículo llegará y saldrá de la ubicación con el mismo rumbo, lo que evitará el giro en U. En las rutas de dos vías, el solucionador considerará ambas direcciones y elegirá una como parte de la optimización de la ruta.
También puedes establecer side_of_road
como verdadero para obtener una ruta en la que el vehículo llegue y salga del lado de la ruta más cercano al punto de referencia. En este caso, el vehículo tampoco cambia de dirección entre la llegada y la salida. Es posible establecer side_of_road
y avoid_u_turns
como verdaderos para lograr el mismo resultado. Para obtener más información, consulta Interacción con otras funciones.
En la práctica, se debe usar avoid_u_turns
cuando es seguro cruzar la ruta para llegar al punto de referencia. Usa side_of_road
cuando no se recomienda o no es posible realizar el cruce.
Ejemplo: Realiza una solicitud OptimizeTours
con avoid_u_turns
Las solicitudes de OptimizeTours
se pueden realizar con REST o gRPC.
Antes de realizar una solicitud, reemplaza los siguientes parámetros por valores adecuados para tu entorno:
- Asegúrate de tener configuradas las Credenciales predeterminadas de la aplicación como se describe en Cómo usar OAuth.
Establece PROJECT_NUMBER_OR_ID en el número o el ID de tu proyecto de Cloud.
El siguiente comando envía una solicitud
OptimizeTours
a la API de Route Optimization y recibe una respuesta de forma síncrona.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
Una vez que se complete la solicitud, recibirás un mensaje de respuesta.
Interacción con otras funciones
avoid_u_turns
se puede usar junto conside_of_road = true
. En este caso, se evitan los giros en U, pero el solucionador selecciona una ruta en la que el vehículo está en el mismo lado de la ruta que el punto de referencia, similar a la configuración deside_of_road = true
solo.- Cuando
avoid_u_turns = true
para una solicitud de visita determinada, elShipmentRoute.Visit
en la respuesta correspondiente tiene el campoinjected_solution_location_token
establecido. El significado preciso de su valor es un detalle de implementación, pero codifica la información sobre el lado de la ruta que eligió el solucionador. - Cuando usas un
ShipmentRoute.Visit
como parte de la solicitud de entrada, si eseShipmentRoute.Visit
corresponde a unVisitRequest
en el queavoid_u_turns = true
, entoncesShipmentRoute.Visit
debe contener uninjected_solution_location_token
que el solucionador mostró anteriormente.
Limitaciones
La evitación de giros en U es el mejor esfuerzo. En ciertas situaciones, la ruta puede seguir conteniendo giros en U:
avoid_u_turns
solo funciona con los modos de viaje que admitenside_of_road
. Específicamente, no es compatible con el modo de viajeWALKING
.avoid_u_turns
no se puede usar para retiros y entregas en los que la llegada y la salida no son las mismas.- Cuando una entrega o un retiro se realizan en un callejón sin salida, es necesario dar vuelta para salir de la ruta.
- El objetivo de esta función es evitar los giros en U en las ubicaciones de retiro y entrega. No se evitan los giros en U entre los puntos de referencia.
- Los giros muy pronunciados hacia una ruta diferente no se consideran giros en U y, por lo general, no se evitarán.
Mientras esta función está en desarrollo, existen limitaciones adicionales. Esperamos que se eliminen a medida que la función evolucione.
avoid_u_turns
no se puede usar junto coninterpret_injected_solutions_using_labels
.