Автораспределение заказов по дорогам или «по прямой»: почему это решает время подачи
Время подачи — показатель, который клиент замечает первым и помнит дольше всего. Цену он сравнит с конкурентами раз в месяц, а «машина ехала двадцать минут» запомнит после первого же случая и в следующий раз позвонит в другую службу. Для водителя тот же показатель означает холостой пробег: километры без пассажира, которые съедают топливо и время.
В обеих цифрах — и во времени подачи, и в холостом пробеге — ключевую роль играет не количество машин на линии, а то, как программа выбирает, какой из них отдать заказ. В этой статье разберём два подхода к автораспределению, покажем на примерах, где они дают разный результат, и объясним, как проверить, что делает ваша программа.
Как работает автораспределение
Когда в службу поступает заказ, у программы есть адрес подачи и координаты всех свободных машин. Задача — выбрать водителя, который доедет до клиента быстрее остальных, и предложить заказ ему (или выстроить очередь предложений). Диспетчер при этом не участвует: раньше он выбирал машину «на глаз», зная город и водителей, теперь это делает алгоритм за доли секунды.
Разница между программами — в том, как они понимают слово «ближайший».
Поиск «по прямой»
Самый простой способ: взять координаты клиента и каждой машины, посчитать расстояние между точками на карте, как если бы между ними была прямая линия, и выбрать минимальное. Это дёшево в вычислениях, не требует карты дорог и работает в любом городе без настройки. Именно поэтому так делает большинство программ для такси.
Проблема в том, что машина не летает. Она едет по дорогам, и расстояние по дорогам может отличаться от расстояния «по прямой» в несколько раз.
Поиск по графу дорог
Второй способ: представить город как граф — набор перекрёстков (узлов) и участков дорог между ними (рёбер) с учётом направления движения и запрещённых манёвров. Для каждой свободной машины программа строит реальный маршрут до клиента и считает его длину или время. Ближайший — тот, чей маршрут короче.
Это сложнее: нужна подробная карта дорог города, нужно поддерживать её в актуальном состоянии, нужен быстрый алгоритм, который успеет обсчитать десятки машин за время, пока оператор заканчивает разговор. Зато результат соответствует реальности.
Где два подхода расходятся
В чистом поле на ровной сетке улиц разница невелика. Но в реальных городах почти всегда есть препятствия, из-за которых «близко по прямой» означает «далеко по дорогам».
Река и мост
Клиент на одном берегу, машина на другом, по прямой — 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-информирование снимает эту нагрузку с операторов — подробнее.
Как проверить свою программу
Если вы не уверены, как распределяет заказы ваша текущая программа, проверьте это за полчаса.
- Задайте вопрос поставщику напрямую. «Поиск ближайшего водителя выполняется по расстоянию по прямой или по маршруту по дорогам? Учитываются ли односторонние улицы и запрещённые повороты?» Ответ «по GPS» или «по координатам» обычно означает «по прямой».
- Проведите тест на «проблемной» точке. Поставьте две тестовые машины: одну через реку или железную дорогу от адреса, но ближе по прямой; вторую — дальше по прямой, но на той же стороне. Создайте заказ и посмотрите, кому он ушёл.
- Посмотрите статистику холостого пробега. Если программа считает километраж подачи, сравните средний пробег до клиента в разных районах. Аномально высокие значения в районах у реки или железной дороги — признак распределения «по прямой».
- Спросите водителей. Они точно знают, бывает ли так, что им «прилетает» заказ с другого берега, когда рядом с клиентом стоял коллега.
Что это даёт в деньгах
Посчитаем на условной службе: 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
Что ещё умеет программа — на странице о программе.