A prevenção de retornos é um recurso de otimização de rotas que impede que os veículos façam retornos 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 prevenção de retornos em uma visita específica.
- A API considera as duas direções de viagem 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 pode precisar 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, placas de trânsito ou condições de trânsito normais.
Propriedades
A propriedade de prevenção de retornos é definida no VisitRequest objeto.
Esse objeto é usado nas matrizes pickups e deliveries de uma
remessa.
| Propriedade | Tipo | Descrição |
|---|---|---|
avoidUTurns |
booleano | Quando definido como true, a API impede que o veículo faça um retorno nesse local de visita. O veículo vai chegar e sair na mesma direção. |
Exemplos
Esta seção abrange dois tipos de exemplos:
- Amostras 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 impedir 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 impede muitos retornos ao direcionar o veículo para o lado da
estrada 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, o que elimina a necessidade de fazer um retorno.
Na prática, use a prevenção de retornos quando for seguro atravessar a rua a pé para chegar ao local da visita. Se atravessar a rua não for
recomendado ou possível, considere definir sideOfRoad como true
em vez disso.
A propriedade sideOfRoad é definida em um objeto Waypoint.
Interação com outros recursos
A prevenção de retornos interage com outros recursos de roteamento das seguintes maneiras:
- Lado da estrada: definir
avoidUTurnsesideOfRoadcomotrueaumenta ligeiramente as chances de evitar um retorno ao direcionar o veículo para o lado da estrada mais próximo do local da visita. No entanto, isso introduz complexidades extras relacionadas às restrições da prevenção de 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 retornos, a resposta da API
inclui um
injectedSolutionLocationTokendentro doShipmentRoute.Visitgerado para registrar o lado da estrada selecionado. Se você reutilizar essa visita como uma solução injetada em uma solicitação futura, será necessário transmitir esse token de volta para a API.
Limitações
A prevenção de retornos é um recurso de melhor esforço. A API ainda pode incluir retornos em um trajeto gerado nas seguintes condições:
- O modo de viagem está definido como um modo 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 um retorno para sair.
- O retorno ocorre ao longo do trajeto, e não no local da visita.
- A manobra é uma curva muito acentuada em uma estrada diferente, que a API não classifica como um retorno.