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 comside_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 deside_of_road = true
.- Quando
avoid_u_turns = true
para uma determinada solicitação de visita, oShipmentRoute.Visit
na resposta correspondente tem o campoinjected_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 esseShipmentRoute.Visit
corresponde a umaVisitRequest
em queavoid_u_turns = true
, entãoShipmentRoute.Visit
precisa conter uminjected_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 aside_of_road
. Especificamente, não há suporte para o modo de viagemWALKING
.- 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.
- Não é possível usar
avoid_u_turns
cominterpret_injected_solutions_using_labels
.