Evite fazer retornos nos locais de retirada e entrega

Por padrão, os veículos podem chegar a um local de retirada ou entrega de qualquer direção e depois sair em qualquer direção. Em alguns casos, isso força o veículo a fazer uma inversão no local da visita, o que pode ser difícil ou impossível devido ao tamanho do veículo, aos sinais de trânsito no local ou às condições de trânsito habituais.

Para evitar que os veículos mudem de direção entre a chegada e a partida em um determinado local de retirada ou entrega, defina avoid_u_turns como "true" para esse local. Com essa configuração, o veículo chega e sai do local com a mesma direção, evitando a manobra de retorno. Em vias de mão dupla, o solucionador considera as duas direções e escolhe uma como parte da otimização da rota.

Também é possível definir side_of_road como verdadeiro para receber uma rota em que o veículo chega e sai do lado da estrada mais próximo ao waypoint. Nesse caso, o veículo também não muda de direção entre a chegada e a partida. É possível definir side_of_road e avoid_u_turns como verdadeiros para alcançar o mesmo resultado. Para mais detalhes, consulte Interação com outros recursos.

Na prática, avoid_u_turns deve ser usado quando for seguro atravessar a estrada para chegar ao ponto de passagem. Use side_of_road quando a travessia for desencorajada ou não for possível.

Exemplo: fazer uma solicitação OptimizeTours com avoid_u_turns

As solicitações OptimizeTours podem ser feitas usando REST ou gRPC.

Antes de fazer uma solicitação, substitua os seguintes parâmetros pelos valores adequados para seu ambiente:

  • Verifique se você configurou as Application Default Credentials conforme descrito em Usar o OAuth.
  • Defina PROJECT_NUMBER_OR_ID como o número ou ID do projeto do Cloud.

    O comando a seguir envia uma solicitação OptimizeTours para a API Route Optimization e recebe uma resposta 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

Quando a solicitação for concluída, você vai receber uma mensagem de resposta.

Interação com outros recursos

  • avoid_u_turns pode ser usado com side_of_road = true. Nesse caso, as conversões em U são evitadas, mas o solucionador seleciona uma rota em que o veículo está no mesmo lado da estrada que o ponto de passagem, semelhante à configuração de side_of_road = true.
  • Quando avoid_u_turns = true para uma determinada solicitação de visita, o ShipmentRoute.Visit na resposta correspondente tem o campo injected_solution_location_token definido. O significado exato do valor é um detalhe de implementação, mas ele codifica as informações sobre o lado da estrada escolhido pelo solucionador.
  • Quando você usa um ShipmentRoute.Visit como parte da solicitação de entrada, se esse ShipmentRoute.Visit corresponde a uma VisitRequest em que avoid_u_turns = true, então ShipmentRoute.Visit precisa conter um injected_solution_location_token retornado anteriormente pelo solucionador.

Limitações

A evitação de retornos em U é feita com base no melhor esforço. Em algumas situações, a rota ainda pode conter retornos:

  • avoid_u_turns funciona apenas com modos de transporte que oferecem suporte a side_of_road. Especificamente, não há suporte para o modo de viagem WALKING.
  • O avoid_u_turns não pode ser usado para retiradas e entregas em que a chegada e a partida não são as mesmas.
  • Quando uma coleta ou entrega está em uma via sem saída, é necessário fazer uma manobra em U para sair da via.
  • O objetivo desse recurso é evitar retornos em locais de retirada e entrega. As voltas em U entre os pontos de passagem não são evitadas.
  • As curvas muito fechadas para uma via diferente não são consideradas retornos e geralmente não são evitadas.

Há outras limitações enquanto esse recurso está em desenvolvimento. Esperamos que elas sejam removidas à medida que o recurso evoluir.