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

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

Дальше — разбор на модельной компании: городская развозка, 6 машин класса «Газель» и «Соболь», 90 точек в день, 22 рабочих дня, средний дневной пробег машины 190 км. Общий пробег — 25 080 км в месяц. Логист собирает план на завтра вечером в таблице, тратит на это 2,5 часа. Сначала — из чего состоит исполнимый маршрут, потом расчёт, потом четыре места, где алгоритм систематически ошибается, и в конце — условия, при которых всё это покупать рано.

Пять полей, без которых маршрут не считается

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

ПолеЧто обычно лежит в системеЧто должно лежатьЧто ломается без этого
Координаты точкиАдрес строкой из заявки: «Каширское ш., 61, склад»Широта и долгота ворот приёмки, а не центра зданияГеокодер ставит точку на середину улицы, время перегона между соседними точками врёт на 10–25 минут
Окно приёмкиЗнает менеджер, в системе пустоИнтервал с датой и признаком «жёсткое» или «мягкое»План строится без ограничения, машина приезжает в обеденный перерыв на закрытый склад
Время разгрузки15 минут по умолчанию у всех точекМедиана по факту за 90 дней, отдельно по каждой точкеОшибка накапливается: 15 точек по 12 лишних минут — три часа сдвига к концу смены
Ограничение по машинеПоля нет вообщеТип кузова, предельная длина, наличие гидроборта, доступ к рампеАлгоритм ставит десятитонник во двор, куда заезжает только «Соболь», водитель разворачивается
Приоритет клиентаПоля нет вообщеКласс клиента и цена срыва окна в рубляхАлгоритм экономит 4 км и срывает окно клиенту, который даёт 18 % выручки

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

Время разгрузки собирается само, если водитель уже отмечается в чате

Если водители ставят отметки «прибыл» и «выехал» кнопками в мессенджере, медиана времени разгрузки по каждой точке накапливается без отдельного проекта: через два месяца у вас есть фактические значения вместо «15 минут у всех». Как устроен этот контур отметок и почему для парка до 25 машин не нужно отдельное мобильное приложение — в базовом разборе автоматизации перевозчика.

схема процессаplanirovanie-reysov-i-marshrutizaciya--01
Карточка точки доставки с пятью обязательными полями и подписями, откуда берётся каждое

Схема-формуляр: крупная карточка «Точка доставки» с пятью строками полей сверху вниз — «Координаты ворот приёмки», «Окно приёмки: интервал + жёсткое/мягкое», «Время разгрузки: медиана по факту за 90 дней», «Ограничение по машине: тип, длина, гидроборт, рампа», «Приоритет клиента: класс и цена срыва в рублях». Слева от каждой строки стрелка с подписью источника: «геокодер + ручная выверка», «обзвон клиентов», «отметки водителя в рейсе», «обзвон клиентов», «выручка клиента из учётной системы». Справа от карточки одна стрелка в блок «Оптимизатор маршрута» с пометкой «считает за секунды». Чертёжный стиль, подписи по-русски.

Пять полей карточки точки: без любого из них план становится неисполнимым

Городская развозка и межгород — это две разные задачи

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

ПараметрГородская развозкаМежгород и плечи
Единица планированияТочка в сменеРейс целиком
Что оптимизируетсяПоследовательность точек, состав маршрута, распределение по машинамВыбор машины под груз, загрузка кузова, попутный и обратный груз
Главное ограничениеОкна приёмки, пропуска в центр, ночные ограничения въездаРежим труда и отдыха водителя, весовой и габаритный контроль
Реалистичный эффект8–12 % пробега и сокращение переработок4–7 % на пустом пробеге, плюс рост загрузки кузова
Что нужно на входеСправочник адресов с координатами и окнамиСправочник плеч со ставками, нормативами и допусками
Куда смотреть в каталоге/solutions/logistics/optimizatsiya-marshrutov/solutions/logistics/planirovanie-zagruzki-transporta

Практический вывод: если у вас смешанный парк и обе задачи сразу, начинайте с той, где больше однотипных повторяющихся событий. Как правило, это городская развозка — там 90 точек в день против 8–12 рейсов, и статистика для настройки правил накапливается за месяц, а не за год. Всё дальнейшее в этой статье считается на городской развозке; для межгорода структура расчёта та же, но подставляются рейсы и пустой пробег вместо точек и километров смены.

Расчёт: 6 машин, 90 точек в день, 25 080 км в месяц

Вводные для расчёта. Переменная стоимость километра для городского фургона — 19 ₽: топливо около 10,1 ₽/км, ремонт и ТО 4,5 ₽/км, шины 1,4 ₽/км, амортизация 3,0 ₽/км. Час логиста в полной стоимости — 620 ₽ (оклад, налоги, рабочее место, делённые на рабочие часы). Час переработки водителя — 480 ₽. Сейчас четыре машины из шести регулярно выезжают за смену примерно на 1,2 часа. Сокращение пробега берём 10 % — середину диапазона 8–12 %.

Валовый эффект маршрутизации и то, что от него остаётся
Сокращение пробега: 25 080 км × 10 % = 2 508 км × 19 ₽/км47 652 ₽
Переработки водителей: 4 машины × 1,2 ч × 22 дня = 105,6 ч, снимается половина → 52,8 ч × 480 ₽/ч25 344 ₽
Часы логиста: план сокращается с 2,5 ч до 0,7 ч в день → 1,8 ч × 22 дня = 39,6 ч × 620 ₽/ч24 552 ₽
Итого валом97 548 ₽
Минус ведение справочника адресов и окон: 0,5 ч в день × 22 = 11 ч × 620 ₽/ч−6 820 ₽
Минус подписка на маршрутизацию: 6 машин × 2 800 ₽−16 800 ₽
Минус поддержка интеграции и правка правил−12 000 ₽
Минус ручные правки диспетчера: правится каждый третий план, съедает 20 % экономии пробега−9 530 ₽
Итого52 398 ₽ чистыми в месяц, 628 776 ₽ в год

Расходы съедают 45 150 ₽ из 97 548 ₽ — 46 % валового эффекта. Это и есть та самая половина, которую не показывают в презентациях: там обычно останавливаются на строке «сокращение пробега на 10 %» и умножают её на двенадцать месяцев. Обратите внимание и на состав валовой части: километры дают меньше половины, остальное — переработки водителей и освобождённые часы логиста, то есть деньги, которые превращаются в реальные только при пересмотре графиков и обязанностей.

Типовое внедрение маршрутизации на такой парк — 420 000–780 000 ₽ вместе с приведением справочника адресов в порядок, интеграцией с учётной системой и обучением. Возьмём середину, 560 000 ₽: окупаемость выходит около 11 месяцев. Это нормальный срок для инфраструктурного проекта, но он вдвое-втрое длиннее того, что обещают в рекламе, и об этом лучше знать до подписания договора. Методику, по которой мы считаем окупаемость и почему нельзя складывать сэкономленные часы разных людей в одну сумму, разбирали отдельно.

графикplanirovanie-reysov-i-marshrutizaciya--02
Диаграмма: 97 548 ₽ валового эффекта минус 45 150 ₽ расходов равно 52 398 ₽ чистыми

Каскадная диаграмма слева направо. Три растущих столбца доходной части с подписями: «Пробег 2 508 км — 47 652 ₽», «Переработки 52,8 ч — 25 344 ₽», «Часы логиста 39,6 ч — 24 552 ₽», над ними промежуточный итог «валом 97 548 ₽». Затем четыре убывающих столбца: «Справочник 11 ч — 6 820 ₽», «Подписка 6 машин — 16 800 ₽», «Поддержка — 12 000 ₽», «Ручные правки — 9 530 ₽». Финальный столбец выделен и подписан «чистыми 52 398 ₽ в месяц». Под диаграммой строка: «расходы съедают 46 % валового эффекта; окупаемость 560 000 ₽ — около 11 месяцев». Чертёжный стиль, подписи по-русски.

Почти половину валового эффекта съедают подписка, справочник и ручные правки

Четыре места, где алгоритм систематически врёт

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

  1. 1
    Пробки берутся из среднего, а разовые события не берутся ниоткуда

    Прогноз времени в пути строится на средней статистике по часу и дню недели. Перекрытие улицы, авария на въезде, снегопад в среду в этот прогноз не попадают. На маршруте из 15 точек накопленное расхождение — 12–18 минут, и оно всегда в одну сторону: план оптимистичнее факта. Лечится не алгоритмом, а буфером: закладывайте 10 % времени смены как резерв и не заполняйте её точками под завязку.

  2. 2
    Оформление документов у клиента в модели отсутствует

    «Время разгрузки» в справочнике обычно означает физическую выгрузку. Но водитель ещё ждёт кладовщика, ставит подписи, иногда пересчитывает вместе с приёмкой. Это 8–12 минут на точку, которые в план не заложены. Правильное значение поля — время от постановки под разгрузку до выезда с территории, а не время работы гидроборта.

  3. 3
    Пропуска и ограничения въезда не выводятся из карты

    Ограничения по массе в пределах МКАД, платный въезд, ночные и дневные запреты, пропускной режим на закрытых территориях — всё это правила, которые надо занести руками один раз и обновлять. Алгоритм с чистой картой построит идеальный маршрут, по которому машину развернут на первом посту.

  4. 4
    Повторный визит после отказа не планируется вообще

    На развозке 4–6 % точек не принимают груз с первого раза: не готова приёмка, нет ответственного, расхождение по документам. На 90 точках это 4–5 повторных визитов в день, которые надо куда-то вставить. Если планировщик о них не знает, их вставляет диспетчер вручную — и именно эти вставки ломают половину его же оптимизированных маршрутов.

«Оптимизация на 14 %» в презентации считается не по вашему факту

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

Правки диспетчера — это не саботаж, а недостающие правила

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

  1. 1Логируйте правку как данные, а не как факт изменения. Записывается что именно переставили, куда и почему — коротким выбором из списка причин: «клиент просил до обеда», «туда не заедет эта машина», «водитель знает подъезд», «повторный визит».
  2. 2Раз в две недели разбирайте десять самых частых причин. Не все правки, а именно повторяющиеся: одиночные — это жизнь, повторяющиеся — это дырка в справочнике.
  3. 3Каждую повторяющуюся правку закрывайте полем или правилом. «Туда не заедет фура» — это ограничение по машине в карточке точки. «Клиент просит до обеда» — жёсткое окно. «Водитель знает подъезд» — привязка точки к бригаде. Правило работает один раз и навсегда, устный договор с диспетчером — до его отпуска.
  4. 4Считайте долю правленых маршрутов как показатель зрелости данных. На старте это 60–80 %, через три месяца нормальной работы должно быть ниже 25 %. Если не опускается — проблема не в людях и не в алгоритме, а в том, что справочник никто не ведёт.

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

схема процессаplanirovanie-reysov-i-marshrutizaciya--03
Цикл: правка диспетчера, причина, разбор раз в две недели, новое правило, падение доли правок

Замкнутая схема-цикл из четырёх блоков по кругу со стрелками: «Правка маршрута + причина из списка» → «Разбор топ-10 причин раз в две недели» → «Новое поле или правило в справочнике» → «Доля правленых маршрутов». Из последнего блока стрелка обратно в первый. Внутри круга подпись-шкала: «старт 60–80 % → через 3 месяца ниже 25 %». Под схемой сноска: «если доля не падает — справочник никто не ведёт». Чертёжный стиль, подписи по-русски.

Правка становится правилом один раз — или повторяется каждый день

Три условия, при которых маршрутизацию ставить рано

В базовом разборе автоматизации перевозчика мы приводили три признака неготовности со стороны данных: меньше 90 % структурированных заявок, отсутствие справочника адресов с координатами и незафиксированное плановое время рейса. Здесь — три других, со стороны самой перевозки. Они про характер работы, а не про порядок в системе, и лечатся не проектом, а ростом.

  1. 1Меньше 20 точек в день. При двух десятках адресов пространство вариантов такое, что опытный логист находит близкий к лучшему порядок за десять минут и в уме. Экономия от алгоритма измеряется единицами километров, а подписка и ведение справочника стоят столько же, сколько при 90 точках. Порог, ниже которого мы сами не беремся, — примерно 35–40 точек в день на парк.
  2. 2Маршруты фиксированные и повторяются неделями. Развозка по своим торговым точкам, вывоз с одних и тех же площадок, обслуживание сети по графику — здесь оптимизировать нечего: маршрут один раз построен и живёт кварталами. Полезнее вложиться в контроль исполнения и в отметки водителя, чем в перестроение того, что не меняется.
  3. 3Некому вести справочник адресов. Это не про деньги, а про человека: нужен один сотрудник, у которого в обязанностях записано заводить новые точки, проверять координаты и обновлять окна. Если такого нет и не появится, справочник за полгода превращается в свалку, а оптимизатор — в генератор маршрутов, которые никто не поедет.

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

сравнениеplanirovanie-reysov-i-marshrutizaciya--04
Сравнение: когда маршрутизация окупается и когда её ставить рано, по шести строкам

Таблица-сравнение из двух колонок «Маршрутизация окупится» и «Ставить рано» с шестью строками: «Точек в день» — «от 35–40» / «меньше 20»; «Маршруты» — «меняются каждый день» / «фиксированные, повторяются неделями»; «Справочник адресов» — «есть ответственный сотрудник» / «вести некому»; «Время разгрузки» — «медиана по факту» / «15 минут у всех»; «Окна приёмки» — «в системе, с признаком жёсткости» / «знает менеджер»; «Ожидаемый чистый эффект» — «52 398 ₽ в месяц на 6 машинах» / «уходит в подписку целиком». Левая колонка со сплошной рамкой, правая — со штриховой. Чертёжный стиль, подписи по-русски.

Проверка на пять минут: попадает ли ваша развозка в левую колонку

Когда маршрутизация не окупится даже при больших объёмах

И отдельный честный случай: объёмы подходящие, точек много, маршруты меняются — а проект всё равно не окупится. Так бывает в четырёх ситуациях, и все четыре видны до начала работ.

  • Пробег не ваш расход. Если развозку возят наёмные машины по фиксированной ставке за точку или за смену, сокращение километров экономит деньги перевозчику, а не вам. Оптимизировать в этом случае надо количество машин и стоимость смены, а это другая задача — планирование загрузки, а не построение маршрута.
  • Смена и так не заполнена. Если машины возвращаются на базу в три часа дня, экономия часов не превращается в деньги: сократить нечего, добавить некуда. Сначала догружайте смену, потом оптимизируйте порядок точек.
  • Окна жёсткие почти у всех клиентов. Когда 80 % точек имеют интервал в один час, свободы у алгоритма почти нет — маршрут определяется расписанием, а не географией. Эффект падает с 8–12 % до 2–4 %, и на этих значениях подписка съедает его полностью.
  • Больше половины точек — новые каждый месяц. Разовая доставка по адресам, которые не повторяются, не даёт накопить ни времени разгрузки, ни ограничений, ни окон. Справочник в этом случае не строится в принципе, и маршрут всегда считается по значениям по умолчанию.

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

Оптимизатор не строит плохие маршруты. Он честно строит лучший маршрут по данным, которых у вас нет.