Разработка системы маршрутизации курьеров и оптимизации доставки

Кастомные системы маршрутизации (VRP) для собственной курьерской службы и агрегаторов: оптимальные маршруты с учётом готовности блюд, окон доставки и температурного режима. На нашей странице автоматизации указан результат для Лабиринта — +20% доставок за смену благодаря оптимальным маршрутам. Опираемся на Yandex.Routing API, Google OR-Tools и ML-модели поверх foodtech-экспертизы 14+ лет.

Что такое система маршрутизации курьеров и кому она нужна

Система маршрутизации курьеров — это бэк-сервис, который в реальном времени решает задачу: «есть N заказов и M свободных курьеров, разные точки забора и доставки, окна выдачи и горящие блюда — как распределить заказы и построить маршруты, чтобы доставить максимум за смену с минимальным временем в пути?». Без неё операционка работает на интуиции диспетчера и движется со скоростью человеческой реакции: это терпимо на 30–50 заказах в день, но ломается на 200+.

Академически класс задачи известен как Vehicle Routing Problem (VRP) — обобщение задачи коммивояжёра на множество машин с ограничениями. В чистом виде она вычислительно неразрешима за разумное время и в реальных проектах решается приближёнными методами: эвристики ALNS, библиотека OR-Tools от Google, готовые сервисы вроде Yandex.Routing API для российского рынка.

Кастомная система маршрутизации оправдана, когда:

  • В сети 50+ заказов в смену, и диспетчер физически не успевает балансировать вручную.
  • Несколько источников (рестораны, dark kitchen, магазины) и десятки курьеров — задача распределения, недоступная ручной диспетчеризации.
  • Бизнес теряет 10–30% курьерочасов на неоптимальных маршрутах — это десятки миллионов рублей в год на крупной сети.
  • Курьеры жалуются на хаотичные перегоны, а бизнес — на жалобы клиентов по опозданиям.
  • Уже используется простая маршрутизация в составе POS-платформы, но её ограничений не хватает.

Если сеть только запускается и в день 10–50 заказов — лучше начать с ручной диспетчеризации и подключения Yandex.Routing API как готового сервиса. Кастомная разработка имеет смысл, когда уже есть данные и понятны ограничения готовых решений.

[ ЗАДАЧИ ]

Какие задачи маршрутизации решаем

«Маршрутизация» — собирательное понятие: под разные задачи нужны разные алгоритмы, интеграции и бюджет. Под бизнес обычно выбирают 1–2 приоритетных типа для MVP, остальные добавляют поэтапно.

[ 01 ]

Базовая маршрутизация (last-mile и multi-stop)

Курьер забрал заказ и отвёз клиенту — или забрал несколько заказов из одной точки и развёз за один проезд, по оптимальному порядку объезда. Сложность низкая-средняя, решается готовыми API (Yandex.Routing) или OR-Tools. Применимо: одиночный ресторан, малая сеть до 30 заказов в день, утренние развозы пекарен и корпоративных обедов.

[ 02 ]

Распределение по курьерам (multi-vehicle)

Классическая задача VRP: есть N курьеров и M заказов, нужно распределить заказы и построить маршруты, минимизируя суммарное время и расстояние — с учётом грузоподъёмности термосумок и временных окон. Сложность высокая: OR-Tools, эвристики ALNS, иногда собственные алгоритмы. Применимо: агрегаторы, quick commerce из dark store.

[ 03 ]

Динамическая маршрутизация в смене

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

[ 04 ]

Маршрутизация с ограничениями

Маршрут строится не только по расстоянию, но и с учётом готовности блюд на кухне, приоритета VIP-клиентов, окон доставки (15–30 минут на адрес), разделения горячего и холодного и грузоподъёмности термосумок. Сложность высокая: многокритериальная оптимизация поверх OR-Tools или ALNS. Применимо: премиум-доставка, foodtech с разнообразным меню, B2B с критичными окнами.

Чем foodtech-маршрутизация отличается от общей логистики

Маршрутизация для доставки «последней мили» в e-commerce (посылки, документы) и для foodtech — разные классы задач, хотя на первый взгляд похожи. Если применить «логистическую коробку» к еде, продукт ломается в часы пик.

ПараметрFoodtech-маршрутизацияОбщая логистика
Окна доставки15–60 минут (критично)часы или день
Состояние грузахрупкий, остывает / таетустойчив к времени
Готовность к выдаче на старте сменынепредсказуема (зависит от кухни)известна заранее
Радиус доставки1–7 км5–50 км
Часы пиквечер пятницы, обед, ужинравномернее
Курьерысвои или гибрид + Яндекс.Доставкасвои + 1–2 внешних подрядчика
Перераспределение в сменепостоянное (новые заказы каждую минуту)редкое
Главная метрикадоставок за смену, % опозданийстоимость на отправление

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

Связь маршрутизации с готовностью блюд на кухне

Главное, чем foodtech-маршрутизация отличается от любой другой. В обычной логистике груз ждёт на складе — здесь он готовится прямо в момент маршрута. Если курьер приехал за 5 минут до готовности, он стоит и теряет минуты; если на 10 минут позже — блюдо остыло и клиент недоволен. Что закладываем в архитектуру:

  • Прогноз времени готовности. Модель на истории конкретной кухни в конкретный час оценивает, во сколько блюдо будет готово, — с учётом текущей загрузки, типа блюда (пицца / суши / коктейль) и числа параллельных заказов.
  • Синхронизация с POS. Интеграция с POS даёт реальный статус: «начато → готовится → готово к выдаче». Маршрутизатор подбирает курьера так, чтобы тот подъехал ровно к моменту готовности.
  • Окно ожидания на точке. Если прогноз ошибся, курьер не стоит больше 5–7 минут: иначе заказ возвращается в очередь, а курьер берёт следующий.
  • Разделение горячего и холодного. Если в маршруте пицца + мороженое + кофе, система группирует заказы так, чтобы холодное и горячее не ехали вместе долго.
  • Связь с computer vision на кухне. На зрелых проектах камера на станции выдачи определяет «блюдо готово» и сама меняет статус заказа — меньше зависимости от ручной отметки повара.

Без этого слоя система работает «как для пакетов» и теряет 10–15% эффективности из-за рассинхронизации с кухней.

Перераспределение заказов в реальном времени

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

  • Динамический пересчёт. Каждый новый заказ запускает пересчёт планов всех активных курьеров — добавить заказ тому, кто рядом и с лёгким маршрутом, или придержать до следующего свободного.
  • Прогноз будущих заказов. ML-модель оценивает, сколько заказов придёт в ближайшие 15–30 минут, — чтобы понимать, можно ли загрузить свободного курьера сейчас.
  • Разбор сложных ситуаций. Курьер застрял в пробке — его последний заказ переназначается ближайшему свободному; курьер не выходит на связь — заказ передаётся другому без потери времени.
  • Балансировка нагрузки. Не «один курьер делает 80% заказов, остальные стоят», а равное распределение в течение смены.

Это двухфазный подход: на старте смены — статичное планирование, в течение смены — оптимизация в реальном времени. Готовые сервисы (Yandex.Routing API в чистом виде) такую задачу не закрывают — нужна кастомная обёртка под специфику foodtech.

Архитектура системы маршрутизации

1. Бэк-сервис маршрутизации

Сердце системы: принимает заказы, координаты и состояние курьеров, выдаёт оптимальный план. Три модели реализации — поверх Yandex.Routing API (простые сценарии), OR-Tools на своей инфраструктуре (гибкие ограничения) или собственное ядро на ALNS (очень сложные задачи). В реальных проектах часто гибрид: OR-Tools или ALNS как ядро плюс Yandex.Maps API для геокодирования и матриц расстояний.

2. Приложение курьера

Мобильное приложение (Flutter) с назначениями и оптимальным маршрутом: встроенный навигатор, связь с клиентом и оператором, учёт смены. Подробнее о классе задач — на странице приложения для службы доставки.

3. Кабинет диспетчера

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

4. Интеграции

POS-системы (iiko / R-Keeper / Poster) — заказы и готовность блюд; CRM — приоритеты VIP и история жалоб; платёжный шлюз — закрытие заказа после доставки; push-сервисы — уведомления курьерам и клиентам; Yandex.Maps API — геокодирование, маршрутизация, аналитика пробок.

5. ML-слой (опционально)

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

[ ПОЧЕМУ SURF ]

За 14 лет создали 300+ мобильных и веб-продуктов

300+ реализованных проектов, 100 международных наград, №1 в мобильной разработке, 250 специалистов в команде. Прямой опыт доставки и маршрутизации — Лабиринт, Golama, Delivery Club, Burger King.

+20%

Доставок за смену у Лабиринта

Благодаря оптимальным маршрутам

90

Дней на запуск quick commerce Golama

Гиперлокальная доставка из dark store

№ 1

В разработке приложений для крупного бизнеса

Рейтинг Рунета 2024

250

Штатных специалистов

VRP, ML, backend, mobile, QA, DevOps

[ КЕЙСЫ ]

Кейсы Surf

Мы создаём foodtech-продукты для лидеров рынка — от стартапов до федеральных сетей. Несколько релевантных проектов из портфеля (полный — на странице foodtech-практики):

Delivery Club

Delivery Club

Курьерская часть агрегатора. С 2012 года — мобильные приложения Delivery Club, включая курьерский сегмент в городах с собственной службой доставки. Прямой опыт построения доставки в составе агрегаторной платформы.

Бургер Кинг

Бургер Кинг

Доставка сети. Архитектура приложения для 7+ млн пользователей со встроенной собственной службой доставки — опыт связки клиент-курьер в распределённой сети.

Юнит-экономика маршрутизации

Кастомная система маршрутизации — инвестиция от 8–15 млн ₽. Окупаемость считаем по четырём направлениям.

  • Рост числа доставок за смену. В кейсе Лабиринта — +20% доставок за смену благодаря оптимальным маршрутам. На сети с 1 000 курьеров и средним доходом сети 500 ₽ с доставки это десятки миллионов рублей дополнительного оборота в месяц.
  • Снижение курьерочасов на тот же объём. Оптимальные маршруты сокращают время в пути на 15–30%; на фонде оплаты курьеров в десятки миллионов рублей это многомиллионная экономия в месяц.
  • Меньше опозданий и компенсаций. Опоздание — это промокод, компенсация или возврат. Каждый процент опозданий — десятки тысяч рублей потерь в месяц на средней сети; качественная маршрутизация снижает опоздания в два-три раза.
  • Удержание курьеров. Курьер с хаотичным маршрутом устаёт и уходит. Прозрачная нагрузка снижает текучесть на 10–20%, а каждый удержанный курьер — это десятки тысяч рублей сэкономленного найма и обучения.

На сети из 200+ курьеров кастомная система маршрутизации окупается за 6–12 месяцев. Точную финансовую модель готовим на этапе Discovery.

Кастомная разработка, Yandex.Routing, OR-Tools или готовая платформа

На рынке три-четыре пути решения задачи.

ПараметрКастомYandex.Routing APIOR-ToolsГотовая платформа (SaaS)
Стартовая ценаот 8 млн ₽оплата по запросамбесплатно (open-source)подписка от 50 тыс. ₽/мес
Срок запуска4–6 месяцев1–2 недели1–2 месяца1–2 недели
Глубина настройкилюбаяв рамках APIлюбая (писать самим)в рамках платформы
Готовность блюд, разделение горячего/холодногопод заказбазовопод заказбазово
Интеграция с iiko / R-Keeper / Posterпод заказчерез свой бэкендчерез свой бэкендкак доработка платформы
Динамика в реальном временидабазоводабазово
Владение алгоритмамиу бизнесау Яндексау бизнесау платформы
Когда лучше200+ заказов в день, готовность блюд, динамикапервый MVP без сложной логикиу вас своя команда по VRPмалая сеть с типовой задачей

Тонкость: даже кастомная система обычно использует Yandex.Maps API как нижний слой (геокодирование, координаты, матрицы расстояний, пробки). Мы строим кастомный солвер поверх — с интеграцией готовности кухни, разделением горячего и холодного, динамикой в реальном времени.

[ ПРОЦЕСС ]

Процесс разработки

[ 01 ]

Discovery

3–4 недели. Аудит текущей операционки, сбор исторических данных за 3–6 месяцев, бенчмарки, выбор архитектурного подхода.

[ 02 ]

Архитектура и прототип

4–5 недель. Схема VRP-ядра, проектирование интеграций с POS, прототип на 50–100 заказах.

[ 03 ]

Разработка MVP

12–16 недель. Бэк-сервис маршрутизации, приложение курьера, кабинет диспетчера, базовые интеграции. Демо каждые 2 недели.

[ 04 ]

Тестирование и пилот

4–6 недель. Стресс-тест на исторических данных, пилот на 1–2 регионах сети, корректировки.

[ 05 ]

Масштабирование и ML

8–16 недель по размеру сети. Выкатка на всю сеть, обучение прогнозных моделей, оптимизация.

Стек технологий

СлойТехнологии
VRP-ядроGoogle OR-Tools, эвристики ALNS, собственные солверы
Карты и геокодированиеYandex.Maps API, Yandex.Routing API
BackendPython (FastAPI / Django) или Kotlin + Spring Boot
База данныхPostgreSQL + PostGIS (геоданные)
Кэш и очередиRedis, Kafka / RabbitMQ — поток заказов в реальном времени
Мобайл курьераFlutter (iOS + Android)
Веб диспетчераReact, TypeScript, Yandex.Maps Web
ML-слойPyTorch / TensorFlow — прогноз времени готовности и времени в пути
MLOpsMLflow, DVC, собственные пайплайны
POS-интеграцииiiko, R-Keeper, Poster через официальные API
PushFirebase + RuStore + Huawei Push
ИнфраструктураDocker, Kubernetes, российские облака — данные в РФ по 152-ФЗ

Команда: продакт, закреплённый тимлид-архитектор с опытом VRP-проектов, VRP-инженер (ядро OR-Tools / ALNS / Yandex.Routing), 2–3 backend-разработчика, ML-инженер, mobile-разработчик (приложение курьера), frontend-разработчик (кабинет диспетчера), QA, DevOps. Параллельно — обучение курьеров и диспетчеров новому инструменту; эта часть пересекается с LMS для линейного персонала.

Стоимость и сроки

Тип проектаСрок MVPСтоимость «от»
Узкий MVP поверх Yandex.Routing API (multi-stop, 1 регион)3–4 месяцаот 3 млн ₽
Кастомный VRP на OR-Tools (распределение по курьерам, базовые ограничения)4–6 месяцевот 8 млн ₽
Foodtech VRP с готовностью блюд и разделением горячего/холодного (динамика)6–8 месяцевот 12 млн ₽
Система для федеральной сети с ML-прогнозом8–12 месяцевот 18 млн ₽
Дополнение: ML-слой прогноза времени готовности и времени в пути+2–3 месяца+от 3 млн ₽

Что влияет на бюджет: сложность задачи (тип из четырёх выше), объём заказов в час пика, наличие исторических данных для обучения моделей, глубина интеграций (одна POS или мультистек), пересчёт в реальном времени или ночные расчёты, стек (Flutter или нативная пара iOS+Android). Если нужно проверить узкую гипотезу за 2–3 месяца — стартуйте с MVP foodtech. Ценовой ориентир по курьерскому приложению — в гайде «сколько стоит приложение для курьеров», сроки — в гайде по срокам разработки.

[ ОТЗЫВЫ ]

Клиенты о работе с нами

Бургер Кинг

Благодаря усилиям команды Surf продажи через цифровые каналы выросли на 85% в течение года. Мобильное приложение заняло первое место в категории «Еда и напитки» в App Store и Google Play.

Татьяна Павлова

Директор по продукту

Додо Пицца

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

Федор Овчинников

Основатель Додо Пиццы

KFC

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

Геннадий Дорофеев

Менеджер по инновациям

[ FAQ ]

Клиенты часто спрашивают

Для простых сценариев (multi-stop, базовое распределение без учёта готовности кухни и разделения горячего/холодного) — да, это разумный старт: Yandex.Routing API закрывает 70–80% задач. Кастом нужен, когда специфика foodtech требует прогноза готовности, динамики, окон и разделения горячего и холодного — этого в коробке нет.
Да, Google OR-Tools — open-source под Apache 2.0, использование в РФ свободное. Это не готовая коробка, а библиотека для VRP-задач: кастомизация под бизнес — отдельная работа разработчиков на 4–12 недель.
Ориентир — от 8 млн ₽ за кастомный VRP с базовыми ограничениями (распределение по курьерам, временные окна). Для готовности блюд, разделения горячего/холодного и динамики в реальном времени закладывайте от 12 млн ₽. Финансовую модель окупаемости готовим перед стартом.
Не работает с 2022 года. Главный картографический и логистический провайдер для РФ — Yandex.Maps API и Yandex.Routing API. Архитектуру делаем так, чтобы при изменении ситуации можно было вернуть Google Maps, но в продакшене 2026 — Yandex.
Да. ML-слой обучается на 3–6 месяцах исторических данных вашей сети: время приготовления конкретных блюд на конкретной кухне в конкретный час, реальное время в пути с поправкой на пробки, поведение курьеров. Точность растёт по мере накопления данных — обычно около 70% после 3 месяцев и 85–90% после года.
В системе настраиваются профили: велокурьер, самокат, авто — со своими ограничениями скорости, проезда и радиусом. Маршрутизатор выбирает курьера под заказ с учётом профиля.
Да. Сначала запускаем кастом параллельно с POS-маршрутизацией на пилотном регионе, сравниваем результаты, затем переключаем — по регионам, а не одним днём. Это снижает риск.

[ обратная связь ]

Расскажите о проекте и мы предложим подходящие решения

напишите нам в Telegram
добавить файл

Отправляя запрос, вы соглашаетесь с политикой конфиденциальности