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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вакансии

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

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

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

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

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

Ответить
Развернуть ветку
Ваня Суханкин

Так, давайте в другую сторону. Сколько должно стоить такси? У ЯТ на тарифе Комфорт+ поездка 30 минут выходит в районе 500 рублей. Это дорого что ли? Какой синьор получает 1000 рублей в час? 😂😂😂

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

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

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

Коммисия Яндекса меня как клиента волновать не должна, доехать до меня одна две минуты, собственно найти следующий заказ меня тоже не волнует если его тупо нет, а если есть там сотни разрабов пилят систему что бы как раз и не было простоев (видимо это им не удаеться и работают там всякие Виталики и Глебы) Бензин 15км простите копейки, что там ещё амортизация, масло, незамерзайка это все тоже стоит копейки ну кому вы все эти сказки рассказывайте

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

Вот я поражаюсь, как человек не понимающий элементарных вещей, " делает зпмечания космической глупости", что такое амортизация я вам поясню, хотя я таксист. Это стоимость владения автомобилем, которая складывается из: 1. Самого автомобиля, стоимость которого благодаря таким умникам как автор этой статьи через три года упадёт на 70%. Через три года этот автомобиль не будет подходить под комфорт + или комфорт т.е. нормально работать в такси нельзя. Продать его не возможно, т.к. по винкоду сразу пробивается что авто работало в такси, т.к. на нём лицензия... 2. Масло, незамерзайка копейки... Масло меняется в зависимости от пробега, как и другие вещи фильтры воздушный, масляный, кондиционера, топливный т.е. ТО от 9000 до 24000р каждые 15000км, которые я проезжаю за полтора два месяца, а ещё от интенсивности эксплуатации колодки, амортизаторы, и т.д. и т.п. А есть ещё более серьёзные узлы, которые по гарантии мне не подменяют т.к. она 120000 км и закончится она у меня примерно через 1,5 года работы в такси если не быстрее... Поэтому когда благодаря алгоритмам автора данной статьи я везу за 200р пассажира и собираюсь высадить пассажира у поворота, а он мне говорит во двор подъезд номер 9, где всё в ямах и заставлено машинами и риск повредить машину свою и чужую возрастает, мне хочется выйти из машины вытащить пассажира за ухо и дать ему подж..пу... Но я этого не делаю, т.к. пассажир не причём, виноваты эти эффективные разработчики, такие как аффтар, которые в жизни не сделали ни одной поездки и не перевезли ни одного пассажира а берутся управлять бизнесом а главное сотнями тысяч людей....

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

Если уже пытаетесь перейти на личности, то конкретно и распишите амортизацию и расходники за 30 минут езды и 15км пробега со средней вероятностью появления огромной ямы или повреждения чужих машин, что вообще-то лично ваша ответственность или чья? Вы же все таки руль крутите.

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

Так разговор не про 15 км и 30 минут. Статья не об этом, статья о том что Яндекс делает и строит бизнес так, что работая 12-14 часов с пробегом 300-400 км водитель грязными может рассчитывать на 5000-7000р за смену. Худавердян так и утверждал, что 430р в час для водителя нормально. Так это уже не генеральный Яндекс.Такси, а генеральный всего Яндекса с июня. Так что говорить о его подчинённых, типа автора данной статьи. Без разницы, авто арендованном или личное у таксиста, ОНО требует денег... И их расчёты не правильные приводят к тому, что в такси вообще скоро не останется нормальных водителей, а это безопасность пассажиров и безопасность других участников дорожного движения... Если я накатываю 5000р грязными, то это где то 35000-45000р в месяц. ЭТО катастрофически мало, вот водители и начинают работать сутками, попадают в аварии... А математика простая комфорт машина 1000000р, пробег 120000км, 8,3 р километр без бензина и ТО, это минимум. Но есть другие затраты это замена резины, щёток, техосмотр, предрейсовый техосмотр, медицинский осмотр, налоги, лизинговые платежи... Т.е. цена за километр примерно 16-18р. Далее пошла цена за минуту, это уже время на оплату труда, а не на технику. Это где то 15р минута. Ваша поездка должна стоить в Москве 630р при близкой подаче.

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

Ну уж нет разговор именно про 30 минут и 15км и что это не может на эконом тарифе стоить 500 рублей, а если пошел дождь автоматом станет 700 или 800 даже. Ну если даже у вас тысячи проблем в виде отдать 26 процентов Яндексу ещё 5-10 говно партнеру, оплатить кредит за машину или лизинг, выплатить алименты, закрыть ипотеку - меня все это не волнует, и вообще почему меня все это должно волновать, я считаю максимум что должен брать эконом тариф это 300 рублей за 30 минут работы, если цена больше я лучше действительно либо пешком прогуляюсь либо на обычном не переполненном тролейбусе доеду, я как бы не брезгаю, да и безопаснее это ваших коллег хрен пойми откуда набранных и хрен знает сколько не мывшихся и не понятно сколько на смене работающих. Я уже реально стремаюсь в 3-4 ночи машину заказывать, такие кадры приезжают что трындец, и что самое интересное комфорт не особо то и лучше сейчас стал, а тарифы выше это вообще для богов (единичные случаи). Хотите больше зарабатывать и сами соглашаетесь отдавать треть оборота агрегаторам - ну не верх тупости? А они вас ещё больше раком ставят, а вы дальше работаете потому что сами себя поставили в положение что уже не можете слезть в этой иглы. Вот и херачьте агрегатора своего и кредиторов своих, а не раскзывайте мне каждый день как вам херово работается. У каждого взрослого мальчика есть голова что бы думать, и никто вас насильно не заставляет брать кредит на машину платить треть агрегатору и при этом все ещё зарабатывать 50 тысяч

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

Вот об этом и речь. Основная проблема в этом и статья про это. Агрегаторы в погоне за прибылью придумывают всякие плюшки привлекая в такси не платежеспособных пассажиров, т.е. не целевую аудиторию такси. А всё просто, я везу пассажира за нормальные деньги, адекватного, готового за это платить, как раньше, когда такси было не для всех, а такие как вы "300р. за 30 минут" ездят на трамвае, и все счастливы.

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

Нормальные деньги для эконом тарифа это 600 рублей в час на лапу из которых у вас рублей 50-70 все расходы, все точка, занавес. Больше вы простите получать никогда не будете, потому что 1000 рублей в час получают топовые разработчики и управленцы, куда что бы попасть нужно лет 5 активно к этому стремиться а не баранку крутить

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

А я и не против в экономе получать и 400р в час, но на руки чистыми. Разработчик конечно "фигура" особенно в Яндекс.Такси, где приложение постоянно глючит и его не могут допилить, а за свои косяки ни кто не отвечает, а с таксиста ещё за издевательства над ним ввиде обкатки сырых фишек комиссию лупят. Но вопросов нет уровень знаний и компетенций любого разработчика выше таксиста, но разработчика же не заставляют из этих денег, 1000р, к примеру платить аренду офиса. А господин Худавердян хочет, что бы из 430р в час таксист оплачивал авто, топливо, налоги и т.д. Я против именно этого.

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