Giro en U

La función para evitar giros en U está presente en <code>ShipmentModel.Shipment</code> en los objetos de retiro y entrega.

La función para evitar giros en U es una función de optimización de rutas que impide que los vehículos giren en la ubicación específica de retiro o entrega de una visita. Si estableces la evitación de giros en U, especificas que el vehículo debe estar orientado en la misma dirección cuando llega a una ubicación de visita y cuando la abandona.

La función para evitar giros en U funciona de la siguiente manera:

  1. Estableces la propiedad de evitar giros en U en una visita específica.
  2. La API considera ambas direcciones de viaje en las rutas de dos sentidos y elige la ruta más óptima.
  3. La API genera una ruta en la que el vehículo llega y se va sin hacer un cambio de sentido en la ubicación de la visita. Es posible que el conductor deba cruzar la calle para llegar a esta ubicación.

Esta propiedad es ideal para situaciones en las que es difícil o imposible hacer un giro en U debido al tamaño del vehículo, las señales de tráfico o las condiciones de tráfico normales.

Propiedades

La propiedad de evitación de giros en U se define dentro del objeto VisitRequest. Este objeto se usa dentro de los arrays pickups y deliveries de un envío.

Propiedad Tipo Descripción
avoidUTurns booleano Cuando se establece en true, la API impide que el vehículo haga un giro en U en esta ubicación de visita. El vehículo llegará y se irá en la misma dirección.

Ejemplos

En esta sección, se abarcan dos tipos de ejemplos:

  • Ejemplos de código que ilustran la estructura de la evitación de giros en U
  • Ejemplo de una solicitud que incluye la función.

Muestras de código

En el siguiente ejemplo, se muestra la estructura deavoidUTurns dentro de un retiro y una entrega:

"pickups":[
  {
    "arrivalLocation": {
      "latitude": 37.42506261000996,
      "longitude": -122.09535511930135
    },
    "avoidUTurns": true
  }
],
"deliveries":[
  {
    "arrivalLocation": {
      "latitude": 37.42421503206021,
      "longitude": -122.09526063135228
    },
    "avoidUTurns": true
  }
]

Ejemplo de solicitud

En el siguiente ejemplo, se muestra una solicitud básica de optimizeTours que incorpora la evitación de giros en U. Esta solicitud incluye los siguientes elementos:

  • Es un envío con retiro y entrega dentro del objeto model.
  • La propiedad avoidUTurns se establece en true en las ubicaciones de retiro y entrega para evitar que el vehículo cambie de dirección en esas paradas.
  {
    "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
        }
      ]
    }
  }

Evita los giros en U con sideOfRoad

Si bien sideOfRoad es una función independiente, está estrechamente relacionada con la evasión de giros en U, ya que evita muchos giros en U al dirigir el vehículo hacia el lado de la ruta más cercano al destino. Esto obliga al vehículo a acercarse a una ubicación de visita desde una dirección específica, lo que elimina la necesidad de hacer un giro en U.

En la práctica, debes evitar los giros en U cuando sea seguro cruzar la calle a pie para llegar a la ubicación de la visita. Si se desaconseja cruzar la ruta o no es posible hacerlo, considera establecer sideOfRoad en true.

La propiedad sideOfRoad se define dentro de un objeto Waypoint.

Interacción con otras funciones

La función para evitar giros en U interactúa con otras funciones de rutas de las siguientes maneras:

  • Lado de la ruta: Si configuras avoidUTurns y sideOfRoad como true, aumentan ligeramente las probabilidades de evitar un giro en U mientras se dirige el vehículo al lado de la ruta más cercano a la ubicación de la visita. Sin embargo, esto introduce complejidades adicionales relacionadas con las restricciones para evitar giros en U. Para la mayoría de las ubicaciones de visita, configurar solo una de estas propiedades es suficiente para evitar los giros en U.
  • Soluciones insertadas: Cuando usas la función para evitar giros en U, la respuesta de la API incluye un injectedSolutionLocationToken dentro del ShipmentRoute.Visit generado para registrar qué lado de la ruta seleccionó. Si alguna vez reutilizas esta visita como una solución insertada en una solicitud futura, debes pasar este token a la API.

Limitaciones

La función para evitar giros en U es un esfuerzo óptimo. La API aún puede incluir giros en U en una ruta generada en las siguientes condiciones:

  • El modo de viaje está configurado en un modo que no es DRIVING.
  • Las ubicaciones de llegada y salida de una ubicación de visita específica son diferentes. En este caso, la API muestra un error.
  • La visita se encuentra en una calle sin salida, por lo que se requiere un giro en U para salir.
  • El cambio de sentido se produce a lo largo de la ruta, en lugar de en la ubicación de visita real.
  • La maniobra es un giro muy pronunciado hacia otra ruta, que la API no clasifica como un giro en U.