Блог

Автораспределение заказов по дорогам или «по прямой»: почему это решает время подачи

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

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

Как работает автораспределение

Когда в службу поступает заказ, у программы есть адрес подачи и координаты всех свободных машин. Задача — выбрать водителя, который доедет до клиента быстрее остальных, и предложить заказ ему (или выстроить очередь предложений). Диспетчер при этом не участвует: раньше он выбирал машину «на глаз», зная город и водителей, теперь это делает алгоритм за доли секунды.

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

Поиск «по прямой»

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

Проблема в том, что машина не летает. Она едет по дорогам, и расстояние по дорогам может отличаться от расстояния «по прямой» в несколько раз.

Поиск по графу дорог

Второй способ: представить город как граф — набор перекрёстков (узлов) и участков дорог между ними (рёбер) с учётом направления движения и запрещённых манёвров. Для каждой свободной машины программа строит реальный маршрут до клиента и считает его длину или время. Ближайший — тот, чей маршрут короче.

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

Где два подхода расходятся

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

Река и мост

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

Железная дорога и промзона

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

Одностороннее движение и запрещённые повороты

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

Разделительная полоса

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

Пример в цифрах

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

Машина А Машина Б
Расстояние по прямой 400 м 650 м
Расстояние по дорогам 4,1 км (через мост) 0,9 км
Время подачи 9–11 мин 2–3 мин
Холостой пробег 4,1 км 0,9 км

Программа «по прямой» выберет машину А, и клиент прождёт на 7 минут дольше, а водитель проедет на 3 километра больше без пассажира. Программа по графу дорог выберет машину Б. Разница на одном заказе — 7 минут и 3 километра. На ста заказах в сутки, даже если такая ситуация возникает в каждом десятом случае, это 70 минут ожидания клиентов и 30 километров холостого пробега ежедневно.

Почему это важно именно для небольшого города

В миллионнике плотность машин настолько высока, что ошибка выбора частично компенсируется: рядом с клиентом почти всегда есть несколько машин, и даже «неправильная» доедет быстро. В городе на 50–300 тысяч жителей на линии может быть 20–60 машин, разбросанных по районам. Здесь каждая ошибка распределения стоит дорого: другой машины поблизости просто нет, и клиент ждёт столько, сколько едет выбранный водитель.

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

Как это реализовано в UpTaxi

UpTaxi ищет ближайшего водителя по графу дорог города с учётом одностороннего движения и запрещённых поворотов. Для этого используется собственный алгоритм прокладки маршрутов и собственная картография: при автораспределении программа не обращается к сторонним сервисам вроде Яндекса или Google, поэтому поиск ближайшей машины происходит быстро и не зависит от доступности и лимитов внешних API.

Несколько практических следствий такого подхода.

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

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

Работа с картой. Граф дорог нужно поддерживать: новые развязки, перекрытия, изменённые схемы движения. Это задача, которую служба решает вместе с поддержкой UpTaxi — когда в городе что-то меняется, карта корректируется. Это честная цена точности: алгоритм «по прямой» не требует карты, но и не даёт результата.

Подробнее о механике — на странице автораспределение заказа и алгоритм прокладки маршрута.

Хотите увидеть, как автораспределение по дорогам работает на карте вашего города? Доступ на 30 дней бесплатно, сервер под вашу фирму готовится в течение дня. Получить доступ.

Что ещё влияет на время подачи

Алгоритм поиска ближайшего — основа, но не единственный фактор. Чтобы подача была стабильно быстрой, важно настроить и остальные элементы.

Режим назначения: список или автоназначение

В приложении водителя UpTaxi есть два режима: водитель видит список заказов и выбирает сам, либо программа назначает заказ автоматически ближайшему. Режим списка привычен водителям, перешедшим с раций: они «ловят» заказы, как раньше ловили в эфире. Автоназначение даёт более ровное время подачи, потому что убирает ситуацию, когда хороший заказ берёт тот, кто первым нажал, а не тот, кто ближе. Многие службы начинают с списка и постепенно переводят водителей на автоназначение, когда те убеждаются, что распределение честное.

Время ожидания ответа водителя

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

Что делать, когда своих машин нет

Если ни один из ваших водителей не взял заказ за заданное время, у службы есть два пути: отказать клиенту или найти машину на стороне. В UpTaxi заказ автоматически уходит в биржу водителей: его выполнит водитель другой службы на той же платформе, причём данные заказа и клиент остаются у вашей фирмы, а при распределении в бирже работает тот же поиск ближайшего по дорогам. Для клиента это означает, что машина приедет, а не «все машины заняты, перезвоните позже».

Предварительные заказы

Заказ на точное время нужно назначать заранее, с учётом того, где водитель будет к этому моменту, а не где он сейчас. Хорошая программа резервирует машину за несколько минут до подачи и не даёт ей взять «короткий» заказ, из-за которого она опоздает.

Информирование клиента

Даже при одинаковом времени подачи воспринимается оно по-разному. Клиент, который получил звонок автоинформатора «к вам выехал белый Hyundai, номер 777, подача 4 минуты», ждёт спокойно. Клиент без информации начинает перезванивать через три минуты. Голосовое и SMS-информирование снимает эту нагрузку с операторов — подробнее.

Как проверить свою программу

Если вы не уверены, как распределяет заказы ваша текущая программа, проверьте это за полчаса.

  1. Задайте вопрос поставщику напрямую. «Поиск ближайшего водителя выполняется по расстоянию по прямой или по маршруту по дорогам? Учитываются ли односторонние улицы и запрещённые повороты?» Ответ «по GPS» или «по координатам» обычно означает «по прямой».
  2. Проведите тест на «проблемной» точке. Поставьте две тестовые машины: одну через реку или железную дорогу от адреса, но ближе по прямой; вторую — дальше по прямой, но на той же стороне. Создайте заказ и посмотрите, кому он ушёл.
  3. Посмотрите статистику холостого пробега. Если программа считает километраж подачи, сравните средний пробег до клиента в разных районах. Аномально высокие значения в районах у реки или железной дороги — признак распределения «по прямой».
  4. Спросите водителей. Они точно знают, бывает ли так, что им «прилетает» заказ с другого берега, когда рядом с клиентом стоял коллега.

Что это даёт в деньгах

Посчитаем на условной службе: 150 заказов в сутки, средняя подача 1,5 км холостого пробега, расход топлива 8 л на 100 км, бензин 60 ₽ за литр. Если автораспределение по дорогам сокращает средний холостой пробег всего на 300 метров (на 20 %), это 45 км в сутки, 3,6 литра, около 216 ₽ в день — или 6 500 ₽ в месяц на весь парк. Сумма небольшая, но она распределена между водителями и ощущается как «в этой службе больше остаётся».

Гораздо важнее второй эффект. Если из-за медленной подачи служба теряет хотя бы 2 % клиентов в месяц (три заказа в сутки при 150), а каждый ушедший клиент делал в среднем 4 поездки в месяц с удержанием 35 ₽ с поездки, то за год накопленный отток составляет десятки тысяч рублей недополученных удержаний и — главное — потерянную долю рынка, которую конкурент заберёт себе. Цифры условные, но направление верное: в небольшом городе время подачи — это и есть конкурентное преимущество, потому что цены у всех примерно одинаковые.

Итог

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

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

Получить доступ на 30 дней · Написать в Telegram · Написать в Max · Позвонить +7 900 28-28-328

Что ещё умеет программа — на странице о программе.

Comments are closed.

Telegram Max