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 sea 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 los 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
OptimizeToursa 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_turnsse 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 = truesolo.- Cuando
avoid_u_turns = truepara una solicitud de visita determinada, elShipmentRoute.Visiten la respuesta correspondiente tiene el campoinjected_solution_location_tokenestablecido. 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.Visitcomo parte de la solicitud de entrada, si eseShipmentRoute.Visitcorresponde a unVisitRequesten el queavoid_u_turns = true, entoncesShipmentRoute.Visitdebe contener uninjected_solution_location_tokenque 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_turnssolo funciona con los modos de viaje que admitenside_of_road. Específicamente, no es compatible con el modo de viajeWALKING.avoid_u_turnsno 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_turnsno se puede usar junto coninterpret_injected_solutions_using_labels.