Por padrão, os veículos podem chegar a um local de coleta ou entrega de qualquer direção e sair em qualquer direção. Em alguns casos, isso força o veículo a fazer um retorno no local da visita, o que pode ser difícil ou impossível devido ao tamanho do veículo, às placas de trânsito no local ou às condições normais de tráfego.
Para evitar que os veículos mudem de direção entre a chegada e a partida
de um determinado local de coleta ou entrega, defina avoid_u_turns
como
"true" para esse local. Com essa configuração, o veículo vai chegar e sair
do local com o mesmo sentido, evitando o retorno. Em vias de mão dupla, o solucionador considera os dois sentidos e escolhe um deles como parte da otimização do trajeto.
Você também pode definir side_of_road
como "true" para receber uma rota em que o veículo chega e sai do lado da via mais próximo do 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 "true" 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 é seguro atravessar a rua para chegar ao ponto de referência. Use side_of_road
quando a travessia não for recomendada ou 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 por 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 via que o ponto de referência, semelhante a definir apenasside_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 via escolhido pelo solucionador. - Quando você usa um
ShipmentRoute.Visit
como parte da solicitação de entrada, se esseShipmentRoute.Visit
corresponder a umVisitRequest
em queavoid_u_turns = true
, entãoShipmentRoute.Visit
precisará conter uminjected_solution_location_token
retornado anteriormente pelo solucionador.
Limitações
A prevenção de retornos é baseada no melhor esforço. Em algumas situações, a rota ainda pode ter retornos em U:
- O
avoid_u_turns
funciona apenas com modos de viagem que oferecem suporte aside_of_road
. Especificamente, ele não é compatível com o modo de viagemWALKING
. avoid_u_turns
não pode ser usado para retiradas e entregas em que a chegada e a partida não são iguais.- Quando uma coleta ou entrega é feita em uma rua sem saída, é necessário fazer um retorno para sair da via.
- O objetivo desse recurso é evitar retornos em U nos locais de retirada e entrega. Retornos entre waypoints não são evitados.
- Curvas muito acentuadas para uma via diferente não são consideradas retornos em U 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 evolui.
- Não é possível usar
avoid_u_turns
cominterpret_injected_solutions_using_labels
.