По умолчанию транспортные средства могут подъезжать к месту погрузки или разгрузки с любого направления и уезжать в любом направлении. В некоторых случаях это вынуждает транспортное средство совершать разворот в месте доставки, что может быть затруднительно или невозможно из-за размеров транспортного средства, дорожных знаков в этом месте или обычных дорожных условий.
Чтобы предотвратить изменение направления движения транспортных средств между пунктом прибытия и пунктом отправления в заданном месте погрузки или разгрузки, можно установить 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.