Как алгоритмы «Яндекс.Такси» распределяют автомобили в городе

Несколько месяцев назад «Яндекс.Такси» разработало и запустило систему, которая предлагает каждому водителю, только что завершившему поездку, индивидуальный маршрут, предсказывая спрос и эффективно распределяя все автомобили по городу. Это позволило водителям, подключенным к сервису, как минимум на 20% увеличить свой ежедневный доход.

Руководитель группы экспериментальных продуктов Лев Феофанов написал для блога компании на vc.ru колонку о том, как работает система подсказок.

Лев Феофанов, Яндекс.Такси

Доход водителя зависит от эффективности

У «Яндекс.Такси», как и у любого сервиса по заказу поездок онлайн, есть две категории пользователей — водители, подключенные к платформе, и пассажиры, которых они везут. Для тех и других важно, чтобы сервис был надёжным, быстрым и доступным.

Разница лишь в том, что для водителей это не просто приложение, а источник дохода — либо основного, либо дополнительного. Поэтому для них важно как можно больше времени проводить с клиентом — чем меньше он ездит «в холостую», тем выше его доход за смену.

Сегодня водитель даже в крупных городах находится с пассажиром не больше двух третей рабочего времени. Это как раз то время, когда он зарабатывает. Остальную треть смены суммарно он ждёт заказ или едет до клиента.

Для повышения доходов водителя без увеличения времени его работы на линии, мы оптимизируем параметр эффективности — это доля от времени на смене, которое водитель проводит непосредственно с пассажиром.

Водителям зачастую сложно принимать решения

Чтобы максимально увеличить полезный пробег у «Яндекс.Такси», есть много алгоритмов. Платформа умеет искать для водителя заказ по цепочке: ещё до завершения текущей поездки система подбирает ему следующий заказ — недалеко от того места, куда он сейчас везёт пассажира.

К сожалению, такие заказы находятся не всегда: например, если текущий заказ заканчивается в отдалённом районе города, то там вполне может и не оказаться желающих заказать такси.

В таких ситуациях водителю приходится самостоятельно принимать решение: оставаться и ждать следующего пассажира или переместиться в другой район в надежде получить заказ там.

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

Во многом водитель опирается на свой субъективный опыт. Например, он знает, что в обед много заказов у университета, по утрам стоит работать в спальных районах, откуда люди едут на работу в центр, а вечером лучше оказаться в центре, чтобы везти людей с работы.

Чтобы облегчить водителям жизнь, мы начали им помогать принимать эти решения. Несколько лет назад мы стали показывать карту повышенного спроса. Прямо в водительском приложении «Таксометр» стали обозначать районы, в которых клиентов больше, чем водителей — то есть много заказов и, как следствие, действует временный повышающий коэффициент.

Но глобально «проблему выбора» нововведение не решило. Часто возникают ситуации, когда рядом с водителем несколько районов с повышенным спросом, а на маршруте ещё и пробки. Как принять оптимальное решение, не потратив время и топливо зря?

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

Как можно помочь водителям принимать решения

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

Чтобы понять, как оптимизировать перемещения водителей, мы построили виртуальный город и перенесли туда настоящие алгоритмы, которые используются для распределения машин и расчёта стоимости проезда в нашем сервисе.

«Жизнь» в город привнесли тысячи виртуальных пассажиров: каждый из них перемещается по своим делам — в точности, как это делают настоящие горожане.

При помощи команды машинного обучения мы смогли воссоздать поведение обычного водителя, который опирается на свой опыт перемещения по городу, и доступную на текущий момент информацию от сервиса — такого, как «Яндекс.Такси». Чем больше дней такой водитель работает, тем больше знаний о городе накапливает, тем более качественными становятся его решения и тем больше он зарабатывает в конце своей виртуальной смены.

Затем мы добавили в виртуальный город водителя-профессионала. Он знает о городе всё: где лучшие заказы, когда будет повышенный спрос, в каком районе он возникнет, как долго продлится, как быстрее всего к нему доехать. Как правило, такой водитель зарабатывает значительно больше, чем первый, за то же время, проведённое на линии.

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

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

Как работает алгоритм распределения водителей

Разбив город на тысячи маленьких районов, мы собираем данные о количестве пользователей в них на данный момент, смотрим на исторические показатели, получаем сведения о загрузке дорог и о предстоящих событиях — например, массовых мероприятиях. Так мы прогнозируем спрос и рассчитываем необходимое число такси, которые смогут его удовлетворить.

Определившись с объемом спроса на ближайшие несколько часов, нам остается найти всех водителей неподалеку и порекомендовать им переместиться оптимальным способом между районами.

Например, мы знаем, что сегодня после 19 часов в Хамовниках такси понадобится примерно 150 пользователям. Неподалеку свои заказы завершат 70 водителей, так что нам остается найти еще 80, для того чтобы удовлетворить спрос и не допустить повышающих коэффициентов.

Дальше в дело вступает математика: чтобы расчёты были точными, нужно учесть сразу несколько вводных. Например, что водитель не обязан следовать нашим рекомендациям: если мы отправим предложение «Проводника» 80 водителям поблизости, не факт, что все они согласятся.

Помимо этого, нужно максимально точно предсказать, скольким водителям это предложение отправить, чтобы в точное время и в нужном месте оказалось требуемое количество готовых к заказам такси.

А также учитывать расстояние, которое проедет водитель, чтобы минимизировать расходы на поездку вхолостую и выбрать только те предложения, которые будут для него выгодны.

Просчитав все эти сценарии, мы высылаем предложение нужному количеству водителей. Когда они начинают двигаться в сторону указанной точки, мы стараемся найти им заказы по пути. Это заказы, которые они могут взять, не слишком отклоняясь от маршрута, и заработать деньги даже за эту поездку.

Доходы водителя с «Проводником» увеличились

Уже первые пилотные запуски «Проводника» показали, что водители, следующие предложениям от системы, начали зарабатывать в среднем на 20% больше, не увеличивая при этом длительность своей рабочей смены.

Более того, мы заметили, что технология значительно облегчила жизнь новичкам в сервисе. Раньше у новых водителей, не работавших в такси и не знающих всех особенностей города, уходило несколько недель на то, чтобы начать ориентироваться и накопить опыт. Например, о том, в какое время и в каком районе спрос повышен. Теперь проводник помогает «догнать» более опытных коллег уже на второй-третий день работы.

Проводник делает сервис более привлекательным для водителей: как для тех, у кого такси — это основная работа, так и для тех, кто считает её подработкой.

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

Сейчас «Проводник» помогает водителям увеличивать свой заработок, но у этой технологии куда более широкое применение. В будущем она может быть применена к беспилотникам.

Компании по всему миру заняты созданием беспилотных автомобилей: свои наработки есть у Alphabet, Uber, «Яндекса», в гонку вступили производители автомобилей. Однако спроектировать автономные машины, способные распознавать дорожную разметку, самостоятельно перемещаться по дорогам, — это лишь одна часть задачи.

Дальше надо научить эти машины принимать решения — когда и куда именно двигаться, для того, чтобы как можно быстрее добраться до следующего пассажира и отвезти его максимально быстрым путём. И в тот момент, когда таких машин на дорогах станет больше, победит тот, кто будет эффективнее управлять таким беспилотным флотом.

Вакансии

В нашей команде еще много задач, который нам надо помочь решить. Присоединяйтесь:

0
240 комментариев
Написать комментарий...
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Глеб Алейников

Кстати логика не в этом... Логика в том, почему я должен делать поездку по фиксированной цене, а не по счётчику, как раньше. Вы не задумывались, почему поездка длится обычно дольше чем показывает Яндекс, так вот за это платите не вы и не сервис, а я водитель

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Глеб Алейников

Это установил не рынок, это установили агрегаторы. Их задача как можно больше поездок с которых они получают нехилую комиссию. Но есть главный нюанс именно уже в Яндексе, я не вижу куда я и за сколько еду, вам не кажется странным, что пассажир видит время цену поездки, а водитель покупает кота в мешке, а если он отказался от поездки то он теряет рейтинг и в итоге это приводит к блокировке... Где тут РЫНОК? Это обман...

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Глеб Алейников

Нет не ждал, я таксист. А почему я должен ехать не понятно куда за непонятные деньги... Где тут рынок за который ты ратуешь... Где свобода выбора и предпринимательства, то на чем основан рынок... Забыл про это, хочешь за 100р быстро с хорошим водителем на хорошей машине... Так не бывает...

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Глеб Алейников

Не иногда, а постоянно думают. По стоимости такси, Москва среди столиц мира третья с конца, опережая Каир и Банког...

Совершенно верно, только не проверять сколько смен, а агрегаторы должны платить не менее стольки то в час в зависимости от региона, города и класса автомобиля в котором работает таксист, а потом уже обеспечив человека гарантированными ему Конституцией правом на достойный труд и правом на отдых, требовать от него услугу надлежащего качества

Ответить
Развернуть ветку
237 комментариев
Раскрывать всегда