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 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 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 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 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

Cuando 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 se encuentra en el mismo lado de la ruta que el punto de referencia, de manera similar a establecer side_of_road = true por sí solo.
  • Cuando avoid_u_turns = true para una solicitud de visita determinada, el campo injected_solution_location_token del objeto ShipmentRoute.Visit en 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.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 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_turns solo funciona con los modos de transporte que admiten side_of_road. Específicamente, no se admite para el modo de viaje WALKING.
  • avoid_u_turns no se puede usar para las retiradas y entregas en las que la llegada y la salida 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.