О бизнес-модели
То, что придумали в Америке, в России существовало уже давно: «бомбилы» у нас были всегда, а вот для некоторых западных стран это оказалось настоящим ноу-хау. Как так: использовать свою машину в качестве такси?
Если взять водителя любого такси, то его рабочее время можно разделить на три периода. Первый – это когда он ждет заказа клиента. Второй – когда едет к нему. И третий – когда клиент уже сел в машину и таксист везет его на место назначения. Вы, как клиент, думаете, что вы платите лишь за время поездки. Нет: вы платите за все три периода работы водителя. Поэтому та история, когда вы приезжаете на вокзал, где таксисты обычно заламывают цены, в какой-то мере оправдана. Ведь водитель приезжает на вокзал, а там еще долго ждет своей очереди – это время бездействия и оплачивает пассажир. По классической схеме организации такси в Европе водитель «простаивает» 60% своего времени, поэтому тарифы там такие высокие.
Что поменялось для водителя в Яндекс.Такси или других аналогичных платформ? В час пик водитель до 85% своего времени едет с пассажиром. Здесь роль сыграл сетевой эффект в бизнесе. Это когда приход каждого нового пользователя системы улучшает сервис для всех остальных. Классический пример – система Android. Чем больше пользователей системы, тем больше приложений под нее разрабатываются, тем больше у нее возможностей и тем охотнее люди будут выбирать Android.
В Яндекс.Такси этот эффект работает так: есть город, есть жители, которых становится все больше за счет новых районов. Когда больше людей в городе, очевидно, что среднее расстояние до ближайшего такси для каждого отдельного человека уменьшается, так как стало больше точек и больше заказов. Таксистам нравится, что у них стало больше заказов. Это привлекает новых водителей, что, в свою очередь, способствует снижению времени подачи машины и приводит к уменьшению цены поездки. Если за час можно сделать больше поездок, то каждая поездка становится дешевле. Почему это нравится водителям? Потому что так у них больше клиентов и больше работы, следовательно, нужно больше водителей – больше людей могут зарабатывать этим на хлеб.
О нужных алгоритмах
Важно написать алгоритмы, которые могут существенно повлиять на время простоя такси и время езды с пассажиром. Как развивались эти технологии? Сначала были диспетчеры, которые распределяли водителей по заказам по телефону. Потом появился GPS, затем стали использовать маршрутизацию по картам, учитывать пробки при расчете расстояния. Казалось, что это все, что можно было сделать. Но это далеко не все. Есть множество факторов, которые определяют популярность сервиса и его работоспособность.
Например, один из ключевых факторов для принятия решения о поездке – это цена. Например, за 150 рублей вы готовы поехать домой на такси, а не на метро, а за 200 – уже нет. Но при этом мы, разработчики сервиса, должны делать так, чтобы машина всегда была в наличии. То есть нужно найти то минимальное повышение цены, при котором такси всегда будет доступно и при котором цена не станет слишком высокой, чтобы человек перестал пользоваться сервисом.
Что имеется в виду. Например, когда в городе идет дождь, то спрос на такси увеличивается в пять раз. Но увеличить количество водителей в пять раз невозможно. Единственное, что можно сделать – это повысить цену. Так, когда вы открываете Яндекс.Такси, мы смотрим, сколько еще людей в этом районе вызывают такси. И если мы видим, что ситуация в районе становится критической, то есть машин не хватает, то специальный алгоритм автоматически повышает цену. И сделать эти вычисления алгоритму надо за кратчайшее время, меньше одной секунды.
Есть и другие ситуации, которые могут повлиять на стоимость. Например, вы вызываете машину для поездки в район, где скоро будет большой спрос, а машин там мало. Тогда платформе выгодно, чтобы уехали именно вы и именно туда, а не другой пассажир, который хочет ехать в район, где свободных водителей и так много. Поэтому алгоритм может понизить цену для вас, а для другого пассажира, который едет в то место, где машины сейчас не нужны, – повысить. И это тоже рассчитывается за доли секунды. Все это – предсказания поведения пользователей. У нас много данных о поведении пользователей, и грех их не использовать, поэтому мы активно работаем над машинным обучением.
Мы также должны оптимизировать время простоя водителей. Допустим, вы вызываете такси, и рядом с вами есть две свободные машины: одна будет ехать к вам пять минут, другая – семь. Но если отправим к вам первую машину, то вторая будет ждать следующий заказ 10 минут. А если отправим вторую, то первая будет ждать следующего клиента всего четыре минуты. Или есть другая проблема, которая существует в больших городах: дело в том, что водители по утрам просыпаются в одних районах, а их пассажиры – в совершенно других. И вот с этим сложно что-то сделать, хотя за счет алгоритма оптимизации цены можно как-то решить.
Также иногда нужно как-то мотивировать водителя брать заказ, даже если ему кажется, что это невыгодная поездка. В аэропортах бывают часы пик, например, когда прилетает много самолетов. И тогда такси там резко становятся в дефиците. Что нужно сделать, если мы видим, что дефицит образуется? Надо снизить цену на поездку в аэропорт из центра города, чтобы привлечь больше машин. Для водителя, который едет в аэропорт за меньшую цену, это кажется странным, до тех пор пока в аэропорту он не заберет очень дорогой заказ. И такие повышающие коэффициенты и их необходимость тоже надо рассчитывать, то есть надо решать и экономические задачи. Более опытные водители со временем понимают, что имеет значение не стоимость каждой отдельной поездки, а то, сколько он заработал в течение дня или за смену.
Будущее таких сервисов
Сейчас в мире развивается новый тренд – сервис совместных поездок, так называемый райдшеринг, когда незнакомые друг с другом пассажиры, грубо говоря, делят поездку на такси. Одно дело, когда вы с другом едете домой и вам по пути. Другое дело, когда вы заказываете такси для себя одного, а вам сервис предлагает взять попутчика, но тогда цена снижается на 20-40%. Чтобы реализовать такой сервис, нужно решить несколько задач.
Во-первых, не всегда есть возможность забирать людей в тех местах, откуда они вызвали машину. Эта сложность возникает из-за особенностей расположения улиц в таких городах, как Москва, где улицы переплетаются не перпендикулярно. Так, программистам нужно сделать алгоритм, чтобы рассчитать все возможные маршруты вокруг клиента, сопоставить их с наличием такси в районе и их маршрутами. И вычисления должны произойти в максимально короткое время. Опять-таки, из-за особенностей улиц в городе иногда можно предлагать пассажирам пройти лишние 100-200 метров, чтобы было удобно строить маршрут, но тогда и цена будет ниже. В Нью-Йорке с этим легче: там все улицы перпендикулярны друг другу. Задача становится проще, когда нужно везти людей из аэропорта, – 70% пользователей поделят такси с другим пассажиром, потому что всем примерно в одном направлении надо ехать. Однако программистам таких сервисов необходимо рассчитать вероятность, что кто-то подсядет в машину и что маршрут будет общим с тем клиентом, для которого делается расчет стоимости. Ведь цену надо показывать сразу и скидку предлагать тоже.
А представьте, что такую же схему можно реализовать с общественным транспортом. То есть сделать так, что автобусы будут забирать пассажиров не только в установленных местах, а кружить по городу, подбирая пассажиров в совершенно разных точках. То есть водитель выходит на работу и целый день просто следует навигатору. Это наша мечта. В Нью-Йорке уже работает стартап, который продвигает эту идею, но там, как я сказал, это сделать проще: грубо говоря, такой микроавтобус просто ездит кругами из-за удобной сетки улиц.
Можно разработать сервис, с помощью которого водители, которые просто едут к себе домой, могли брать попутчиков за какую-то плату, чтобы разделить расходы на бензин. Например, вы едете из Санкт-Петербурга в Ленобласть каждый день, почему бы не подвезти кого-нибудь и получить за это вознаграждение?
У нас, в Яндекс.Такси очень много задач, которые нужно решать, и очень много планов. Здорово то, что мы решаем такие прямо академические задачи в области программирования и машинного обучения, но эти решения действительно меняют сервис, которым пользуются ваши друзья и близкие. То есть вы можете прийти домой вечером и показать вашим родным, что вот это изменилось в сервисе и это вы, условно, сделали. Это крутое ощущение. И мы в компании всегда рады талантливым разработчикам.