De forma predeterminada, los vehículos pueden llegar a una ubicación de retiro o entrega desde cualquier dirección y, luego, salir en cualquier dirección. En algunos casos, esto obliga al vehículo a hacer un giro en U 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áfico 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 partida en una ubicación de partida o destino determinada, puedes establecer avoid_u_turns como verdadero para esa 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 sentidos, 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 llega y sale 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 partida. Es posible configurar side_of_road y avoid_u_turns como verdaderos para lograr el mismo resultado. Para obtener más detalles, consulta Interacción con otras funciones.
En la práctica, se debe usar avoid_u_turns cuando sea seguro cruzar la calle para llegar al punto de referencia. Usa side_of_road cuando se desaconseje o no sea posible cruzar.
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 Usa OAuth.
Establece PROJECT_NUMBER_OR_ID en el ID o número de tu proyecto de Cloud.
El siguiente comando envía una solicitud de
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
Cuando 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 se encuentra en el mismo lado de la ruta que el punto de referencia, de manera similar a establecerside_of_road = truepor sí solo.- Cuando
avoid_u_turns = truepara una solicitud de visita determinada, el campoinjected_solution_location_tokendel objetoShipmentRoute.Visitde la respuesta correspondiente se establece. 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 haya devuelto anteriormente.
Limitaciones
La función para evitar giros en U es el mejor esfuerzo. En ciertas situaciones, es posible que la ruta siga conteniendo giros en U:
avoid_u_turnssolo funciona con los modos de transporte que admitenside_of_road. Específicamente, no se admite para el modo de viajeWALKING.avoid_u_turnsno se puede usar para las recolecciones y entregas en las que la llegada y la partida no son iguales.- Cuando una entrega o retiro se realiza en una calle sin salida, es necesario hacer un giro en U para salir de la calle.
- 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 cerrados hacia una ruta diferente no se consideran giros en U y, por lo general, no se evitarán.
Existen limitaciones adicionales mientras esta función está en desarrollo. Esperamos que se levanten a medida que evolucione la función.
avoid_u_turnsno se puede usar junto coninterpret_injected_solutions_using_labels.