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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вакансии

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

4444
240 комментариев

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

36
Ответить

Потому что в душе он бывший СЕО.

26
Ответить

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

9
Ответить

Ой ну тогда объясни мне какого хера это же такси стоит будто за рулём сидим сениор бэкенд разработчик???

1
Ответить

Потому что водитель, это профессия. Я 20 лет за рулём, но недавно пришёл в такси, около года и понимаю, что до профессионального не водителя, а таксиста мне далеко. А почему нужно платить, объяснение на поверхности: это каршеринговые битые машины на улицах, это таксисты с полугодичным опытом автошколы, которые не показывают даже повороты. Только грамотей из каршеринга, такой как ты покатался пару часиков, не разбил машину, не сбил пешехода и норм, обошлось, а таксисту благодаря " автору этой статьи" приходится ездить 12-14 часов и проезжать 300-400 км... Я позавчера отработал 6часов, 180 км и в минусе, потому что 3000р выручка, минус 2000 аренда минус 700р бензин, и хорошо если штраф не прилетит то я заработал 300р, а если помыть машину то 0!!!!

1
Ответить

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

1
Ответить

Добрый день а вы не забудьте что с такси работают водители которые есть большой стаж и опыт работы в обслуживании и не надо их сравнить с детьми которые окончили после 18 лет школу водителей любителя и подрабатываю в такси я против них ничего не имею их жизнь видимо заставляет подрабатывать подрабатывать Так что это обычная профессия как и ваша и не надо ставить себя выше всех ну в каждой профессии есть свои плюсы и минусы и в наше время работа водителя у которого 20 или 30 лет стаж закон видимо позволяет в наше время считать не за что не спешите с выводами Россия непредсказуема неизвестно что будет с вашей профессией через несколько лет.

1
Ответить