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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вакансии

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

0
240 комментариев
Написать комментарий...
Ваня Суханкин

Опять нытье в комментариях про то, что таксист почему-то не зарабатывает ху*ион в месяц. Может кто-то внятно объяснить, почему водила, который потратил полгода на автошколу, должен получать столько же, сколько человек, потративший время и силы на получение профессии?

Ответить
Развернуть ветку
Вимарт Тур

У меня самого два высших образования,но в силу жизненных обстоятельств я вынужден сейчас работать в такси и возить такое быдло как ты. Соли Бога чтобы тебе не пришлось сесть за руль со своими знаниями. Посмотрим,будешь ты ныть или нет!

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

С какой стати тебе должны платить больше за кручение баранки только лишь на основании того, что у тебя два высших? Ты каким-то образом применяешь полученные знания и тем самым оказываешь услугу лучше, чем условный Вася с 9 классами образования? У тебя сверхзвуковое такси или что?

Ответить
Развернуть ветку
Олег Ивахнов
С какой стати тебе должны платить больше за кручение баранки

С какой стати программистам платят за клацанье по клавишам )))))
А парикмахер так вообще ножчинацми клац клац и все
Начальник вон сидит вообще нихрена не делает только слова произносит

Ответить
Развернуть ветку
Denis Vasilev

Ну так чего ж все не идут клацать клавишами, если это так просто, а идут в такси?

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

В такси идут потому что работу найти не возможно а некоторые потому что на зарплату основной работы не возможно прожить... Вы блядь тут все такие умные собрались утырки, из за таких как вы в стране жопа и поэтому депутаты Госдумы получают МРОТ 388 тысяч а простой бедный народ чудом выживает и вынужден таксовать....

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