Evite los giros en U en los lugares de retiro y entrega

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 con side_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 de side_of_road = true solo.
  • Cuando avoid_u_turns = true para una solicitud de visita determinada, el ShipmentRoute.Visit en la respuesta correspondiente tiene el campo injected_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 ese ShipmentRoute.Visit corresponde a un VisitRequest en el que avoid_u_turns = true, entonces ShipmentRoute.Visit debe contener un injected_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 admiten side_of_road. Específicamente, no es compatible con el modo de viaje WALKING.
  • 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.