По умолчанию транспортные средства могут прибывать в пункт выдачи или доставки с любого направления, а затем уезжать в любом направлении. В некоторых случаях это заставляет транспортное средство делать разворот в месте посещения, что может быть затруднительно или невозможно из-за размера транспортного средства, дорожных знаков в месте или обычных условий дорожного движения.
Чтобы предотвратить изменение направления движения транспортных средств между прибытием и отправлением для данного пункта выдачи или доставки, вы можете установить для avoid_u_turns
значение true для этого пункта. При такой настройке транспортное средство будет прибывать и покидать пункт с одинаковым направлением, избегая таким образом разворота. На дорогах с двусторонним движением решатель будет учитывать оба направления и выбирать одно из них в рамках оптимизации маршрута.
Вы также можете установить side_of_road
в значение true, чтобы получить маршрут, по которому транспортное средство прибывает и уезжает по обочине дороги, ближайшей к точке маршрута. В этом случае транспортное средство также не меняет направление между прибытием и отправлением. Можно установить и side_of_road
, и avoid_u_turns
в значение true, чтобы получить тот же результат. Подробности см. в разделе Взаимодействие с другими функциями .
На практике следует использовать avoid_u_turns
, когда безопасно перейти дорогу, чтобы попасть в точку маршрута. Используйте side_of_road
, когда переход нежелателен или невозможен.
Пример: сделайте запрос OptimizeTours
с помощью avoid_u_turns
Запросы OptimizeTours
можно выполнять с использованием REST или gRPC .
Перед созданием запроса замените следующие параметры на значения, соответствующие вашей среде:
- Убедитесь, что у вас настроены учетные данные приложения по умолчанию , как описано в разделе Использование OAuth .
Установите PROJECT_NUMBER_OR_ID на номер или идентификатор вашего облачного проекта.
Следующая команда отправляет запрос
OptimizeTours
в API оптимизации маршрутов и синхронно получает ответ.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
После завершения запроса вы получите ответное сообщение.
Взаимодействие с другими функциями
-
avoid_u_turns
можно использовать вместе сside_of_road = true
. В этом случае развороты избегаются, но решатель выбирает маршрут, по которому транспортное средство находится на той же стороне дороги, что и точка маршрута, аналогично установкеside_of_road = true
отдельно. - Когда
avoid_u_turns = true
для определенного запроса на посещение, тогдаShipmentRoute.Visit
в соответствующем ответе имеет установленное полеinjected_solution_location_token
. Точный смысл его значения — это деталь реализации, но оно кодирует информацию о стороне дороги, выбранной решателем. - При использовании
ShipmentRoute.Visit
как части входного запроса, если этотShipmentRoute.Visit
соответствуетVisitRequest
, в которомavoid_u_turns = true
, тоShipmentRoute.Visit
должен содержатьinjected_solution_location_token
ранее возвращенный решателем.
Ограничения
Избегание разворота — лучшее решение. В определенных ситуациях маршрут все еще может содержать развороты:
-
avoid_u_turns
работает только с режимами передвижения, которые поддерживаютside_of_road
. В частности, он не поддерживается для режима передвиженияWALKING
. -
avoid_u_turns
нельзя использовать для забора и доставки груза, когда время прибытия и отправления не совпадает. - Когда пикап или доставка находится на тупиковой дороге, необходимо сделать разворот, чтобы съехать с дороги.
- Цель этой функции — избежать разворотов в местах погрузки и доставки. Развороты между точками маршрута не избегаются.
- Очень крутые повороты на другую дорогу не считаются разворотами, и их, как правило, не избегают.
Пока эта функция находится в стадии разработки, существуют дополнительные ограничения. Мы ожидаем, что они будут сняты по мере развития функции.
-
avoid_u_turns
нельзя использовать вместе сinterpret_injected_solutions_using_labels
.