Evitare inversione a U

L'evitamento dell'inversione a U è presente in `ShipmentModel.Shipment` negli oggetti di ritiro e consegna.

L'evitamento dell'inversione a U è una funzionalità di ottimizzazione del percorso che impedisce ai veicoli di fare inversione a U nella sede di ritiro o consegna specifica di una visita. Se imposti l'evitamento dell'inversione a U, specifichi che il veicolo deve essere rivolto nella stessa direzione quando arriva e quando lascia una sede di visita.

L'evitamento dell'inversione a U funziona nel seguente modo:

  1. Imposti la proprietà di evitamento dell'inversione a U su una visita specifica.
  2. L'API considera entrambe le direzioni di viaggio sulle strade a doppio senso e sceglie il percorso più ottimale.
  3. L'API genera un percorso in cui il veicolo arriva e parte senza fare inversione a U nella sede della visita. Il conducente potrebbe dover attraversare la strada per raggiungere questa sede.

Questa proprietà è ideale per le situazioni in cui fare inversione a U è difficile o impossibile a causa delle dimensioni del veicolo, dei segnali stradali o delle normali condizioni del traffico.

Proprietà

La proprietà di evitamento dell'inversione a U è definita all'interno dell'oggetto VisitRequest. Questo oggetto viene utilizzato all'interno degli array pickups e deliveries di una spedizione.

Proprietà Tipo Descrizione
avoidUTurns booleano Se impostata su true, l'API impedisce al veicolo di fare inversione a U in questa sede di visita. Il veicolo arriverà e partirà nella stessa direzione.

Esempi

Questa sezione tratta due tipi di esempi:

  • Esempi di codice che illustrano la struttura dell'evitamento dell'inversione a U.
  • Un esempio di richiesta che include la funzionalità.

Esempi di codice

L'esempio seguente mostra la struttura diavoidUTurns all'interno di un ritiro e una consegna:

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

Esempio di richiesta

L'esempio seguente mostra una richiesta optimizeTours che incorpora l'evitamento dell'inversione a U. Questa richiesta include i seguenti elementi:

  • Una spedizione con un ritiro e una consegna all'interno dell'oggetto model.
  • La proprietà avoidUTurns impostata su true sia per le sedi di ritiro che di consegna per impedire al veicolo di cambiare direzione in queste fermate.
  {
    "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
        }
      ]
    }
  }

Evitare le inversioni a U con sideOfRoad

Sebbene sideOfRoad sia una funzionalità separata, è strettamente correlata all'evitamento dell'inversione a U perché impedisce molte inversioni a U indirizzando il veicolo sul lato della strada più vicino alla destinazione. In questo modo, il veicolo è costretto ad avvicinarsi a una sede di visita da una direzione specifica, eliminando la necessità di fare inversione a U.

In pratica, devi utilizzare l'evitamento dell'inversione a U quando è sicuro attraversare la strada a piedi per raggiungere la sede della visita. Se attraversare la strada è sconsigliato o non è possibile, valuta la possibilità di impostare sideOfRoad su true invece.

La proprietà sideOfRoad è definita all'interno di un oggetto Waypoint.

Interazione con altre funzionalità

L'evitamento dell'inversione a U interagisce con altre funzionalità di routing nei seguenti modi:

  • Lato della strada: se imposti sia avoidUTurns che sideOfRoad su true aumentano leggermente le probabilità di evitare un'inversione a U mentre indirizzi il veicolo sul lato della strada più vicino alla sede della visita. Tuttavia, in questo modo si introducono ulteriori complessità relative alle limitazioni dell'evitamento dell'inversione a U. Per la maggior parte delle sedi di visita, è sufficiente impostare una sola di queste proprietà per evitare le inversioni a U.
  • Soluzioni inserite: quando utilizzi l'evitamento dell'inversione a U, la risposta dell'API include un injectedSolutionLocationToken all'interno di ShipmentRoute.Visit generato per registrare il lato della strada selezionato. Se riutilizzi questa visita come soluzione inserita in una richiesta futura, devi restituire questo token all'API.

Limitazioni

L'evitamento dell'inversione a U è una funzionalità "best effort". L'API potrebbe comunque includere inversioni a U in un percorso generato nelle seguenti condizioni:

  • La modalità di viaggio è impostata su una modalità diversa da DRIVING.
  • Le sedi di arrivo e partenza per una sede di visita specifica sono diverse. In questo caso, l'API restituisce un errore.
  • La visita si trova su una strada senza uscita, che richiede un'inversione a U per uscire.
  • L'inversione a U si verifica lungo il percorso, anziché nella sede della visita vera e propria.
  • La manovra è una svolta molto brusca su una strada diversa, che l'API non classifica come inversione a U.