Evitare inversione a U

La prevenzione delle inversioni 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 invertire la marcia nel punto di ritiro o consegna specifico di una visita. Se imposti l'evitamento dell'inversione a U, specifichi che il veicolo deve essere orientato nella stessa direzione quando arriva e quando lascia una posizione di visita.

La funzionalità per evitare le inversioni a U funziona nel seguente modo:

  1. Imposti la proprietà di evitamento dell'inversione a U in una visita specifica.
  2. L'API prende in considerazione entrambe le direzioni di marcia 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 un'inversione a U nella località della visita. Il conducente potrebbe dover attraversare la strada per raggiungere questa località.

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

Proprietà

La proprietà per evitare le inversioni 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 impostato su true, l'API impedisce al veicolo di fare un'inversione a U in questa posizione di visita. Il veicolo arriverà e partirà rivolto nella stessa direzione.

Esempi

Questa sezione tratta due tipi di esempi:

  • Esempi di codice che illustrano la struttura 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 di 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 di base che include l'evitamento delle inversioni 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 nelle località di ritiro che in quelle 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
        }
      ]
    }
  }

Evita le inversioni a U con sideOfRoad

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

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

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

Interazione con altre funzionalità

L'opzione Evita inversioni 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 possibilità di evitare un'inversione a U mentre il veicolo viene indirizzato sul lato della strada più vicino alla posizione della visita. Tuttavia, questa operazione introduce ulteriori complessità relative alle limitazioni dell'evitamento dell'inversione a U. Per la maggior parte delle località di visita, è sufficiente impostare una sola di queste proprietà per evitare inversioni a U.
  • Soluzioni inserite:quando utilizzi l'evitamento dell'inversione a U, la risposta dell'API include un injectedSolutionLocationToken all'interno del ShipmentRoute.Visit generato per registrare il lato della strada selezionato. Se riutilizzi questa visita come soluzione inserita in una richiesta futura, devi passare questo token all'API.

Limitazioni

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

  • La modalità viaggio è impostata su una modalità diversa da DRIVING.
  • I luoghi di arrivo e partenza per una posizione di visita specifica sono diversi. 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 avviene lungo il percorso, anziché nella posizione effettiva della visita.
  • La manovra è una svolta molto brusca su un'altra strada, che l'API non classifica come inversione a U.