Пять лет назад мы выкатили академически безупречный солвер для крупного ритейлера, а через неделю обнаружили, что курьеры ездят по своим засаленным бумажкам. Почему? Потому что алгоритм запихнул пятитонник в арку исторического центра, где едва пролезает самокат, и заложил нулевое время на поиск парковки в шесть вечера пятницы. Так я усвоил: чистая математика мертва, если она не знает, как пахнет улица.
Оптимизация маршрутов доставки — это не поиск кратчайшего пути на графе и не раскраска карты в разные цвета. Это ежесекундная война с хаосом, где холостые пробеги, срыв сроков и дорогая последняя миля съедают маржу логистики быстрее, чем финдиректор успевает закрыть сводную таблицу. Кто-то пытается залить эту проблему деньгами, нанимая больше водителей. Мы заливаем её предиктивными моделями.
Оптимизация маршрутов доставки: почему математика ломается об асфальт
Посмотрим на классическую задачу маршрутизации транспорта (VRP). Вы покупаете коробочную систему, она прожёвывает заявки на утреннюю смену и рисует красивые нити на экране диспетчера. Ровно в 11:00 взлетает трафик, пара машин ломается, начинается ливень, и ваш «оптимальный» план превращается в операционную катастрофу. Диспетчер седеет, клиенты обрывают колл-центр.
Проблема статических солверов в том, что они оптимизируют сферический вакуум. Они берут графы дорог и пытаются минимизировать пройденное расстояние. Но расстояние бизнесу не интересно. Бизнесу интересна стоимость доставки юнита и вероятность успешного закрытия окна доставки. Что мы на самом деле оптимизируем, когда внедряем ИИ? Маршруты — да. Но в первую очередь мы балансируем флит-микс и жесткие тайм-слоты.
Вы не отправляете грузовой Transit ради двухсотграммового конверта, и вы не отправляете пешего курьера с 30-килограммовым телевизором. У вас есть зоопарк ресурсов: фургоны, ларгусы, велосипеды, наемники на своих авто. Натянуть 10 000 заказов на этот зоопарк с учетом того, что у каждого заказа свое окно доставки, а у каждого курьера — свой предел усталости, — это NP-трудная задача. Классика здесь захлебывается, когда переменных становится слишком много.
Рыночный стандарт решения? Взять публичный API карт, прикрутить константу на разгрузку (допустим, 5 минут на точку), прогнать генетический алгоритм и отдать в прод. Наш подход в Morana Labs: мы не верим в константы и публичные API. Мы не гоняем логистические данные клиентов через облака. Инференс крутится on-premise, на серверах в контуре заказчика, потому что цепочка поставок — это коммерческая тайна, а не корм для чужих дата-центров. Нейронка должна предсказывать реальное время обслуживания на конкретном адресе на основе исторических логов. В человейнике с одним работающим лифтом курьер потратит 15 минут, в частном секторе — две. ИИ обязан учитывать этот зазор, иначе весь тайминг поедет на первой же точке.
Сейчас из каждого утюга орут про генеративный ИИ. Маршрутизация на LLM? Ага, удачи. Скормите языковой модели ваши логистические графы, и она сгенерирует вам гениальный маршрут через параллельную вселенную. Для хардкорной маршрутизации и реалтайма нужно обучение с подкреплением (RL) и тяжелые эвристики. Нам нужен детерминированный профит, а не галлюцинации.
ИИ последняя миля — это интеграция, а не просто алгоритм
Модель может быть сколь угодно гениальной, но если она питается мусорными или запаздывающими данными, на выходе вы получите мусорные маршруты. Алгоритм слеп без прямого доступа к железу и складской автоматике.
Первое — телематика. Модель должна знать, где физически находится машина, с какой скоростью она движется, сколько топлива в баке. Это учет трафика и погодных аномалий в реальном времени. Если снегопад парализовал спальный район, система перестраивает маршруты смежных машин на лету, уводя их от коллапса, а не ждет, пока они встанут в мертвую пробку.
Второе — WMS (система управления складом). Без жесткой связки алгоритма со складом вы получаете фургоны, простаивающие у дока. Мы синхронизируем волну комплектации с расчетным временем прибытия (ETA) конкретной машины. Статусы заказов обновляются в реальном времени. Клиент отменил заказ, пока курьер в пути? WMS бьет в солвер, солвер мгновенно пересчитывает граф, приложение водителя обновляет точку — минус один холостой пробег.
Западные вендоры вроде SAP или Oracle свернулись, и их легаси-решения для supply chain постепенно превращаются в тыкву без обновлений. Текущий массовый переход на отечественные решения для цепочек поставок — это не беда, а окно возможностей. Это шанс вырезать монолит, который считал логистику статичной, и внедрить микросервисы, которые умеют в динамику.
Как мы срезаем минус 10–20% затрат
Как выглядит эффект от внедрения? Вы перестаете возить воздух. Минус 10–20% затрат последней мили и рост процента выполнения сроков до уровня e-com гигантов — это не магия, это математическое следствие устранения простоев. Переход происходит поэтапно, без остановки бизнеса.
- Оцифровка физики: Собираем исторические треки, логи WMS, штрафы за срыв SLA. Нейросеть учится на ваших реальных факапах, а не на синтетике.
- Прогнозирование хаоса: Внедряем ML-модуль оценки ETA, который жрет данные о погоде, пробках и профиле адресов. Он выдает вероятностное окно (p99), а не точное обещание, которое невозможно сдержать.
- Динамический рероутинг: Связываем движок с курьерским приложением. Сценарий ломается в пути — маршрут пересобирается в фоне. Водитель просто видит, что следующая точка изменилась, без паники и звонков диспетчеру.
- Shadow mode: Алгоритм крутится параллельно с живыми логистами. Месяц мы бьем метрики. Когда ИИ стабильно показывает меньше холостых пробегов и лучший SLA — переключаем рубильник.
Реальная проблема внедрения ИИ в логистике — заставить операционку поверить машине. Когда алгоритм говорит опытному водителю свернуть прямо в пробку, потому что через 20 минут свободная сейчас объездная трасса встанет намертво, водитель будет сопротивляться. Починить математику — это шаг номер один. Починить операционную культуру — шаг номер два. Но когда они сходятся, спасенная маржа падает прямиком в вашу чистую прибыль, а не в бензобак.