A evitação de retorno em U é um recurso de otimização de rotas que impede que os veículos façam esse tipo de manobra no local específico de coleta ou entrega de uma visita. Ao definir a prevenção de retornos, você especifica que o veículo deve estar na mesma direção ao chegar e sair de um local de visita.
A prevenção de retornos funciona da seguinte maneira:
- Você define a propriedade de evitar retornos em U em uma visita específica.
- A API considera os dois sentidos de tráfego em vias de mão dupla e escolhe o caminho mais adequado.
- A API gera um trajeto em que o veículo chega e sai sem fazer um retorno no local da visita. O motorista talvez precise atravessar a rua para chegar a esse local.
Essa propriedade é ideal para situações em que fazer um retorno é difícil ou impossível devido ao tamanho do veículo, às placas de trânsito ou às condições normais de tráfego.
Propriedades
A propriedade de evitar retornos é definida no objeto VisitRequest.
Esse objeto é usado nas matrizes pickups e deliveries de um
envio.
| Propriedade | Tipo | Descrição |
|---|---|---|
avoidUTurns |
booleano | Quando definido como true, a API impede que o veículo faça um retorno em U no local da visita. O veículo vai chegar e sair na mesma direção. |
Exemplos
Esta seção aborda dois tipos de exemplos:
- Exemplos de código que ilustram a estrutura da prevenção de retornos.
- Um exemplo de solicitação que inclui o recurso.
Amostras de código
O exemplo a seguir mostra a estrutura de avoidUTurns em uma retirada e uma entrega:
"pickups":[ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries":[ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ]
Exemplo de solicitação
O exemplo a seguir mostra uma solicitação básica de optimizeTours que
incorpora a prevenção de retornos. Essa solicitação inclui os seguintes elementos:
- Uma remessa com uma coleta e uma entrega dentro do objeto
model. - A propriedade
avoidUTurnsdefinida comotruenos locais de retirada e entrega para evitar que o veículo mude de direção nessas 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 } ] } }
Evitar retornos com sideOfRoad
Embora sideOfRoad seja um recurso separado, ele está intimamente relacionado à prevenção de retornos porque evita muitos retornos ao direcionar o veículo para o lado da via mais próximo do destino. Isso força o veículo a se aproximar de um local de visita em uma direção específica, eliminando a necessidade de fazer um retorno.
Na prática, use a evitação de retorno quando for seguro atravessar a rua a pé para chegar ao local da visita. Se atravessar a rua for
desaconselhável ou impossível, defina sideOfRoad como true
em vez disso.
A propriedade sideOfRoad é definida em um objeto Waypoint.
Interação com outros recursos
A prevenção de inversão de marcha interage com outros recursos de rotas das seguintes maneiras:
- Lateral da via:definir
avoidUTurnsesideOfRoadcomotrueaumenta um pouco as chances de evitar um retorno ao direcionar o veículo para a lateral da via mais próxima do local da visita. No entanto, isso introduz complexidades extras relacionadas às restrições de evitar retornos. Para a maioria dos locais de visita, definir apenas uma dessas propriedades é suficiente para evitar retornos. - Soluções injetadas:quando você usa a prevenção de retorno, a resposta da API
inclui um
injectedSolutionLocationTokendentro doShipmentRoute.Visitgerado para registrar qual lado da via foi selecionado. Se você reutilizar essa visita como uma solução injetada em uma solicitação futura, transmita esse token de volta para a API.
Limitações
A evitação de retornos em U é um recurso de melhor esforço. A API ainda pode incluir retornos em uma rota gerada nas seguintes condições:
- O modo de viagem está definido como algo diferente de
DRIVING. - Os locais de chegada e partida de um local de visita específico são diferentes. Nesse caso, a API retorna um erro.
- A visita está localizada em uma rua sem saída, exigindo uma inversão de marcha para sair.
- A inversão de marcha ocorre ao longo do trajeto, e não no local da visita.
- A manobra é uma curva muito acentuada em uma via diferente, que a API não classifica como um retorno.