Evita le inversione a U nelle località di ritiro e consegna

Per impostazione predefinita, i veicoli possono arrivare in un luogo di ritiro o di consegna da qualsiasi direzione e poi ripartire in qualsiasi direzione. In alcuni casi, questo costringe il veicolo a fare inversione a U nel luogo della visita, il che potrebbe essere difficile o impossibile a causa delle dimensioni del veicolo, dei segnali stradali nel luogo o delle normali condizioni di traffico.

Per impedire ai veicoli di cambiare direzione tra l'arrivo e la partenza per una determinata posizione di ritiro o consegna, puoi impostare avoid_u_turns su true per questa posizione. Con questa impostazione, il veicolo arriverà e lascerà la posizione con la stessa direzione, evitando così l'inversione a U. Sulle strade a doppio senso, il risolutore prenderà in considerazione entrambe le direzioni e ne sceglierà una come parte dell'ottimizzazione del percorso.

Puoi anche impostare side_of_road su true per ottenere un percorso in cui il veicolo arriva e parte dal lato della strada più vicino al waypoint. In questo caso, il veicolo non cambia direzione tra l'arrivo e la partenza. È possibile impostare sia side_of_road sia avoid_u_turns su true per ottenere lo stesso risultato. Per maggiori dettagli, vedi Interazione con altre funzionalità.

In pratica, avoid_u_turns deve essere utilizzato quando è sicuro attraversare la strada per raggiungere il waypoint. Utilizza side_of_road quando l'attraversamento è sconsigliato o non possibile.

Esempio: invia una richiesta OptimizeTours con avoid_u_turns

Le richieste OptimizeTours possono essere effettuate utilizzando REST o gRPC.

Prima di effettuare una richiesta, sostituisci i seguenti parametri con valori appropriati per il tuo ambiente:

  • Assicurati di aver configurato le credenziali predefinite dell'applicazione come descritto in Utilizzare OAuth.
  • Imposta PROJECT_NUMBER_OR_ID sul numero o sull'ID del tuo progetto Cloud.

    Il seguente comando invia una richiesta OptimizeTours all'API Route Optimization e riceve una risposta in modo sincrono.

    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

Al termine della richiesta, riceverai un messaggio di risposta.

Interazione con altre funzionalità

  • avoid_u_turns può essere utilizzato insieme a side_of_road = true. In questo caso, le inversioni a U vengono evitate, ma il risolutore seleziona un percorso in cui il veicolo si trova sullo stesso lato della strada del waypoint, in modo simile all'impostazione side_of_road = true da sola.
  • Quando avoid_u_turns = true per una determinata richiesta di visita, allora ShipmentRoute.Visit nella risposta corrispondente ha il campo injected_solution_location_token impostato. Il significato preciso del suo valore è un dettaglio di implementazione, ma codifica le informazioni sul lato della strada scelto dal risolutore.
  • Quando utilizzi un ShipmentRoute.Visit come parte della richiesta di input, se questo ShipmentRoute.Visit corrisponde a un VisitRequest in cui avoid_u_turns = true, allora ShipmentRoute.Visit deve contenere un injected_solution_location_token restituito in precedenza dal risolutore.

Limitazioni

L'evitamento dell'inversione a U si basa sul "best effort". In alcune situazioni, il percorso potrebbe comunque contenere inversioni a U:

  • avoid_u_turns funziona solo con le modalità di viaggio che supportano side_of_road. Nello specifico, non è supportata per la modalità di viaggio WALKING.
  • avoid_u_turns non può essere utilizzato per i ritiri e le consegne in cui l'arrivo e la partenza non coincidono.
  • Quando un ritiro o una consegna si trova su una strada senza uscita, è necessario fare un'inversione a U per uscire dalla strada.
  • Lo scopo di questa funzionalità è evitare le inversioni a U nei luoghi di ritiro e consegna. Le inversioni a U tra i waypoint non vengono evitate.
  • Le curve molto strette su una strada diversa non sono considerate inversioni a U e in genere non vengono evitate.

Durante lo sviluppo di questa funzionalità, sono presenti ulteriori limitazioni. Prevediamo che vengano rimossi man mano che la funzionalità si evolve.