Попасть в точку

26 июня, 12:00

Люди часто вызывают такси к вокзалам, аэропортам, торгово-развлекательным центрам. Это большие здания со множеством входов и выходов, и найти приехавшую машину иногда непросто. Например, пользователь может ожидать водителя у главного подъезда — и не знать, что автомобильное движение там запрещено. Или бывает, что человек находится в одном конце здания, а водитель подъехал к противоположному. Это тоже неудобно: надо идти пешком сотни метров (порой — с детьми и багажом) либо договариваться о новом месте встречи.

Чтобы водителям и пассажирам было проще отыскать друг друга, мы научили приложение Яндекс.Такси подсказывать удобные точки посадки. Это места, которые расположены недалеко от выходов из здания и к которым можно без проблем подъехать на машине. Они отмечены на карте синими точками. Больше не нужно бегать с сумками по вокзалу или обсуждать с водителем ориентиры («Я стою под большим рекламным щитом — хотя погодите, они тут на каждом углу»). Просто выберите подходящую точку — и машина будет ждать вас именно там.

Точки посадки расположены у транспортных узлов, станций метро, офисных кварталов, торговых центров, вокзалов, аэропортов, жилых комплексов — в общем, там, где действует сложная схема организации движения. Это около 10 тысяч строений в одной только Москве. Вручную выделить для каждого удобные точки нереально, поэтому мы использовали алгоритм на базе машинного обучения.

Как определить удобные точки посадки

Мы проанализировали обезличенные треки поездок, выполненных автомобилями Яндекс.Такси за последние месяцы. Для каждого трека известна точка начала поездки: там человек сел в такси. Казалось бы, достаточно отыскать места, где много таких точек накладываются друг на друга — раз все садятся в авто именно там, значит, это удобное место. Но всё не так просто: зачастую здания окружает целое облако точек — они распределены по карте почти равномерно. Это вина GPS — при определении местоположения система может ошибаться на десятки метров.

Облако точек вокруг торгового центра «Европейский» в Москве

Алгоритм смотрит на дорожный граф и отбрасывает точки, где GPS явно соврал. Очевидно, что водители перемещаются только по дорогам: такси вряд ли заберёт человека прямо со взлётно-посадочной полосы аэродрома, лесной опушки или из окрестного пруда. Оставшиеся точки — те, которые рассеяны вдоль дорог, — алгоритм разбивает на кластеры. Для каждого кластера вычисляется центр масс — так называют среднее значение координат всех входящих в кластер точек. Это предварительный кандидат на роль удобной точки.

Все кандидаты проходят проверку. Мы оцениваем, насколько удобно добираться до этого места — например, проверяем, нет ли на дороге запрещающих знаков или разметки. Точки, которые успешно прошли проверку, появляются в приложении.

Особенность алгоритма — способность к самообучению. Не обязательно вызывать такси именно в точку, которую советует приложение. Если известно более удачное место, можно передвинуть «булавку» туда. Алгоритм учитывает такие переносы: когда их много, появляется новая точка или старая переезжает в другое место. Самообучение позволяет быстро реагировать на смену обстановки. В жизни случается всякое: один из выходов из торгового центра могут закрыть, а прилегающая улица может превратиться в пешеходную. В такой ситуации алгоритм подстроится под обстоятельства и автоматически передвинет точки посадки.

***

Сейчас точки посадки доступны пользователям Яндекс.Такси для iOS. В ближайшее время они появятся и на Android. Пока мы расставили точки в Москве — но это только начало. В будущем аналогичная разметка станет доступна всюду, где работает Яндекс.Такси, — это более ста городов в шести странах.

9 комментариев
Подписаться на комментарии к посту
Было бы замечательно, если бы рядом с некоторыми такими точками указывалась разница в цене поездки (например, иногда разумнее перейти напротив, пересечь переход и т.п.)
dmitryvolkovtaxi
Сотрудник Яндекса27 июня, 20:21
vx53,
Здравствуйте! А ведь такое у нас уже тоже есть :) Даже статью писали на Хабре https://habrahabr.ru/company/yandex/blog/330524/
dmitryvolkovtaxi,
 Великолепно! Благодарю за ссылку.
И вот все-таки: почему нельзя вызвать такси просто указав точку на карте? Почему нужно обязательно привязываться к адресу? Особенно в подмосковье тяжело приходится, где адреса частенько не проставлены на карте.
В моем доме 9 подъездов и водитель постоянно звонит и спрашивает, к какому нужно подъехать. В результате лишняя сложность на пустом месте. 
Обновлено 27 июня, 18:29
dmitryvolkovtaxi
Сотрудник Яндекса27 июня, 20:23
daftix,
Добрый вечер! Можно просто указать точку на карте, просто если рядом есть какой-то адрес, то в данных заказа будет привязка к нему, но у водителя будет указана конкретная точка, где нужно ожидать. Также при заказе можно оставить комментарий, чтобы вопросов у водителя точно не осталось :)
Огонь! Ждем точки в Питере, спасибо!
Дмитрий
2 июля, 13:55
Здравствуйте. Отправлял в службу поддержки яндекс карт пример, как нереально криво сейчас строятся маршруты по адресам: https://yandex.ru/maps/-/CBQvBFAtkA


Почему-то за адрес яндекс берёт точку не со стороны указанных подъездов или ближайшую для движения, а точку адреса указанную в народной карте. Конечно можно для одного дома точку сдвинуть, но это именно системная ошибка и как в данном примере видно, все маршруты будут строиться с увеличенным расстоянием из Туполева 11а, что приводит и к неправильному подсчёту стоимости поездки/времени в пути до посадки и т.п. 


Так же не хватает построения короткого маршрута, как второй вариант, и для обычной карты, а не только такси, по алгоритму схожему с поездкой на общественном транспорте. Это уменьшит лишний пробег для автомобилистов с соответствующими экологическими и экономическими последствиями. Например: 
1 вариант маршрута, который строит сейчас: https://yandex.ru/maps/-/CBQvBGSt-C
2 вариант показывать, быстрее и подойдёт больше и пассажирам такси и владельцам авто, если они без груза: https://yandex.ru/maps/-/CBQvBOARHA пешком только в конце менее 200 метров от Туполева 15.
Тем более удобно было ба всегда сразу показывать ближайшие парковки к месту назначения как вариант, который может быть удобен.https://yandex.ru/maps/-/CBQvBSVrGC


Так же очень не хватает для пешеходных и вело маршрутов возможность установки промежуточных точек, аналогично маршруту на авто https://yandex.ru/maps/-/CBQvB2qE-D  . Т.к. по опыту знаешь, что например по предлагаемому маршруту нет освещения или дырявый асфальт в лужах и т.п.
Спасибо.
Дмитрий
2 июля, 14:41
Дмитрий,
причём маршрут с частью пешеходного дважды(подъехать+уехать) уменьшит лишний пробег(итоговую цену поездки даже при большем тарифе) .


Другой вопрос вспомнил решил вам написать - передайте пож-та в соответствующий отдел. Писал в яндекс карты(веб версии) о полном перекрытии движения для всех видов транспорта http://www.voronezh-city.ru/communications/announcement/detail/21925 .
Но кирпич на дорогу так и не поставили на картах. Яндекс карты веб версии и мобильной версии так и продолжали строить маршрут по перекрытому участку https://yandex.ru/maps/-/CBQvFORX1C
Потом ещё как пользователь, добавил на карты знак, что дорожные работы, но автомобилистов этот знак всё равно вводил в заблуждение, т.к. в данном случае движение полностью перекрыто и на карте надо показывать кирпич .
Но много автомобилистов в том числе и ваше яндекс такси продолжало ехать к переезду, т.к.  на карте в его сторону показывались просто дорожные работы.
Соответственно кто-то отменил заказ такси, а кто-то ждал дополнительно 20 минут, а водители ехали себе в убыток и т.п.

Хотелось бы возможность из мобильной карты или навигатора отправить "Дорожное событие" кирпич о перекрытии движении и заполнить поле для причины, куда можно вставить ссылку или описать ситуацию, фото прикрепить. А модератор после проверки информации добавит на карту кирпич, чем исключит проезд по участку дороги. Спасибо.

Дмитрий,
 Спасибо.