Транспортная компания: −18% пробега при том же объёме доставок
45 машин, два диспетчера и вечерний Excel с маршрутами на завтра. За три месяца пробег на одну доставку упал с 27,4 до 22,5 км, а парк стал возить на 22% больше точек без единой новой машины. Разбираем в том числе и то, почему первый прогон оптимизатора показал −26% и почему эту цифру пришлось честно уменьшить.

С чем пришли
Владелец сформулировал задачу так: парк растёт, топливо съедает маржу, а маршруты на завтра два диспетчера собирают вечером в Excel по памяти — уйдёт человек, уйдёт и знание того, к кому нельзя приезжать после трёх и куда не влезет длинномер. Нужно возить тот же объём меньшим пробегом и перестать быть справочной службой по вопросу «где моя машина». Условие жёсткое: ничего не менять в 1С, не покупать новую телематику и не пересаживать водителей на другие телефоны — работать программно поверх того, что уже стоит.
Что делали по неделям — включая сложности
В реальных проектах всегда есть грабли. Мы показываем их здесь честно — потому что умение их проходить и есть то, за что вы платите.
Замер: треки против заказов
Две недели ничего не оптимизировали, только считали. Выгрузили треки из Wialon за три месяца и наложили на отгрузки из 1С. Смотрели три величины: пробег на доставку, холостые перегоны и время под разгрузкой. Первая находка — 22% пробега это возвраты на базу за догрузом, потому что маршрут собирался вокруг клиента, а не вокруг машины: диспетчер ставил срочную заявку в ближайший рейс, машина уезжала полупустой и возвращалась. Вторая находка оказалась хуже: 31% адресов в 1С записаны как ориентир, а не адрес — промзона без нумерации, объект на выезде, въезд со стороны котлована. Ни один оптимизатор с такими данными работать не может, и это выяснилось на второй неделе, а не на восьмой.
Геокодинг и справочник точек разгрузки
Первая сложность проекта. Прогнали 1 900 адресов через геокодер: 1 310 сели уверенно, 590 остались без точки разгрузки. Дочищать справочник до старта означало не стартовать никогда — часть этих объектов физически меняется каждый месяц. Сделали иначе: выдали водителю мобильную форму из четырёх вопросов, которая открывается при первом визите на новый адрес — подтверди точку разгрузки на карте, отметь тип въезда и ограничение по массе, укажи окно приёмки, впиши контакт на объекте. За подтверждённую точку — 200 ₽ премии водителю. Стартовали в тот же день, на сырых данных: там, где координат нет, оптимизатор не переставляет точку, а оставляет её в том порядке, в каком поставил диспетчер. Через шесть недель живых рейсов справочник закрыл 92% адресов.
Паспорта машин и правила загрузки
Завели то, чего в 1С не было вовсе: тоннаж, тип и длина кузова, наличие манипулятора, пропуск в центр, допустимая высота въезда. Поверх — правила совместимости груза, снятые с двух диспетчеров за три сессии: металлопрокат шесть метров не едет в четырёхметровый борт, цемент не грузится в один рейс с гипсокартоном, паллетный кирпич требует манипулятора, если на точке нет своей техники. Этап выглядел скучно и занял ровно неделю, но именно он отделяет работающий план от красивого. На следующем этапе мы увидели, что бывает без него.
Оптимизатор и мягкий режим
Первый прогон без ограничений предыдущего этапа дал −26% пробега и примерно половину физически невыполнимых рейсов: длинномеры во дворах, разгрузка в 17:40 на объекте, который закрывается в 15:00. После ввода паспортов, окон приёмки и правил совместимости осталось −18%. Тогда же вылезла вторая сложность, и она не техническая: водители восприняли алгоритм как надзор сверху, а двое старших прямо сказали, что маршрут знают лучше. Спорить бесполезно, поэтому запустились в мягком режиме — маршрут выдаётся как рекомендация, порядок точек не приказ, отклонение фиксируется, но месяц не разбирается и не влияет на оплату. Параллельно показали водителям их собственную выгоду: меньше возвратов на базу и смена, которая заканчивается вовремя.
ETA клиентам и разгрузка диспетчеров
Вечером клиент получает интервал на завтра, за 40 минут до прибытия — уточнённый ETA и ссылку на страницу статуса с точкой машины на карте. Ссылка живёт сутки и не требует входа, иначе ей никто не пользуется. Отдельно сделали то, что обычно забывают: если машина опаздывает больше чем на 30 минут, уведомление уходит сначала диспетчеру, а не клиенту — человек должен предупредить объект голосом, а не система молча передвинуть время. Первая неделя дала неожиданный эффект: звонков стало меньше сразу, зато выросло число заходов по ссылке на статус, и по ним стало видно, какие именно объекты нервничают.
Живой поток в мягком режиме
Каждый день сравнивали план и факт по каждому отклонению. Где водитель поехал иначе и был прав — закрытый переезд, разворот не влезает, приёмка до 15:00, охрана не пускает без заявки за сутки — правило уходило в модель как жёсткое ограничение. Где не прав, это стало видно в цифрах, без разговоров на повышенных тонах. За четыре недели накопили 340 таких правил, причём 60% из них пришли от четырёх водителей с самым большим стажем. Доля рейсов, пройденных ровно по плану, выросла с 38% до 81% сама, без единого приказа. Момент, когда старший водитель принёс замечание по маршруту сам, мы считаем точкой, где проект стал жизнеспособным.
Полный режим, дашборд и приёмка
Маршрут стал основным планом: отклонение требует причины в один тап из готового списка, свободный текст оставили только шестым пунктом. В 9:00 руководитель получает сводку — пробег и рубли на доставку, доля доставок в интервале, холостой пробег, отклонения в разрезе водителей и машин. В денежную модель экономии заложили 18 000 сокращённых километров из фактических 19 560: округление в пользу заказчика, чтобы расчёт не держался на одном удачном месяце и на сезоне.
- Справочник точек разгрузки: координаты, тип въезда, ограничение по массе и высоте, окно приёмки, контакт на объекте, требование манипулятора. Заполняется и уточняется водителями с телефона в момент первого визита, версионируется — видно, кто и когда поменял точку.
- Оптимизатор маршрутов: берёт заказы из 1С, паспорта машин, правила совместимости груза и накопленные ограничения, отдаёт план на завтра за 4 минуты вместо 2,5 часов ручной сборки. Диспетчер может переставить любую точку руками, система запоминает такие правки и показывает повторяющиеся.
- Мобильный маршрутный лист водителя: веб-приложение на его же телефоне, работает офлайн на плохой связи и досылает данные при появлении сети. Порядок точек, отметка разгрузки, фото документов, причина отклонения в один тап.
- Контур контроля отклонений: телематика Wialon сравнивает факт с планом и поднимает алерт при отклонении больше 5 км или 30 минут. Диспетчер узнаёт в момент события, а не по чекам с АЗС в конце месяца.
- ETA-сервис: пересчёт времени прибытия каждые 5 минут с учётом пробок и фактического времени на предыдущих разгрузках, уведомления клиенту в SMS и Telegram, публичная страница статуса заказа по ссылке на сутки.
- Дашборд руководителя: пробег и рубли на доставку, доля в обещанном интервале, холостой пробег, отклонения по водителям и машинам, динамика по неделям. Все метрики считаются из тех же данных, что и модель экономии, — сверить можно в любой момент.
Цифры до и после
- Геокодинг одним прогоном не бывает, и планировать проект так, будто бывает, — главная ошибка в этой отрасли. Треть адресов у перевозчика стройматериалов это не адреса, а ориентиры, и чистить их в кабинете бесполезно: точка разгрузки известна только тому, кто там разгружался. Мы чуть не пошли по пути дочистить справочник до старта и потеряли бы месяц. Правильный ход — стартовать на сырых данных в мягком режиме, оставляя неразмеченные точки там, где их поставил диспетчер, и добирать координаты руками водителей на живых рейсах, платя за подтверждённую точку. Разовые 118 000 ₽ премий (590 адресов по 200 ₽) — это расходы заказчика вне нашего счёта, и они закрылись экономией топлива примерно за две недели.
- Сопротивление водителей лечится временем, а не приказом, и месяц мягкого режима стоит дешевле конфликта. Мы сознательно потратили четыре недели на режим, где отклонение фиксируется, но не разбирается и не влияет на оплату. Дело не только в психологии: в первые недели водитель, который знает двор, объективно прав чаще алгоритма, потому что у алгоритма ещё нет данных о закрытом переезде и о приёмке до трёх. Отклонения нужно не запрещать, а превращать в ограничения модели — так и набрались те самые 340 правил, две трети которых пришли от четырёх самых опытных водителей. Переход в полный режим после этого прошёл без единого разговора с владельцем.
- Оптимизатор без ограничений парка — генератор невыполнимых планов, и его первая цифра самая опасная в проекте. −26% на первом прогоне выглядели прекрасно, их очень хочется показать заказчику, и примерно половина построенных рейсов была физически невыполнима. После ввода тоннажа, габаритов, манипуляторов и окон приёмки осталось −18%. Мы теперь показываем обе цифры сразу, с разницей и объяснением, откуда она берётся: разговор про то, что правильное число меньше красивого, дешевле вести на пятой неделе, чем на тринадцатой, когда водители уже сорвали три приёмки.
- Экономику считаем брутто и нетто раздельно, иначе она врёт. Брутто 292 000 ₽ в месяц: топливо 234 000 ₽ (18 000 сокращённых километров по 13 ₽ — это 18 л на 100 км при 72 ₽ за литр), шины, масла и ТО 34 200 ₽ (те же километры по 1,9 ₽), вечерние переработки диспетчеров на планировании 23 800 ₽ (99 часов в месяц при ставке около 240 ₽ с налогами). Из этого вычитаем 75 000 ₽ поддержки и 25 000 ₽ эксплуатации: маршрутный и картографический сервис 11 000 ₽, сервер оптимизатора 8 000 ₽, SMS-уведомления 6 000 ₽. Чистыми остаётся 192 000 ₽ в месяц, внедрение возвращается за 6 месяцев. Что мы намеренно не включили: рост объёма на 22% без новых машин — это выручка, а не экономия, и зависит она от отдела продаж, — и несостоявшийся найм третьего диспетчера: освободившиеся от звонков два часа в день закрыли эту потребность, но ставку в 90 000 ₽ мы в расчёт не ставим. Оба эффекта — запас прочности модели, а не её основание.
