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 a inversão de marcha. 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 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 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
OptimizeTourspara 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_turnspode ser usado comside_of_road = true. Nesse caso, as inversões de marcha 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 = truepara uma determinada solicitação de visita, oShipmentRoute.Visitna resposta correspondente tem o campoinjected_solution_location_tokendefinido. O significado exato do valor é um detalhe de implementação, mas ele codifica as informações sobre o lado da rua escolhido pelo solucionador. - Quando você usa um
ShipmentRoute.Visitcomo parte da solicitação de entrada, se esseShipmentRoute.Visitcorresponder a umVisitRequestem queavoid_u_turns = true, oShipmentRoute.Visitprecisará conter uminjected_solution_location_tokenretornado 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_turnsfunciona apenas com modos de viagem que oferecem suporte aside_of_road. Especificamente, ele não é compatível com o modo de viagemWALKING. avoid_u_turnsnã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 coleta 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_turnscominterpret_injected_solutions_using_labels.