AI-оптимизация последней мили доставки: разработка системы

Последняя миля — дороже всего. На неё приходится 28–53% всех затрат на доставку. Причина — низкая плотность заказов, узкие временные окна, частые отказы. Мы решаем эту задачу с помощью AI: строим динамические маршруты, предсказываем успех доставки, автоматически перепланируем при сбоях. Система упра

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1006

Последняя миля — дороже всего. На неё приходится 28–53% всех затрат на доставку. Причина — низкая плотность заказов, узкие временные окна, частые отказы. Мы решаем эту задачу с помощью AI: строим динамические маршруты, предсказываем успех доставки, автоматически перепланируем при сбоях. Система управления доставкой на базе AI координирует работу курьеров (AI-курьер) и микро-фулфилмент центров, обеспечивая бесшовную последнюю милю. Наши системы показывают снижение failed first delivery с 20% до 9% и рост количества остановок на курьера до 90–100 в день. В результате cost per delivery снижается на 15–28%, а производительность курьеров растёт в 1.5 раза.

AI-оптимизация последней мили: ключевые результаты

Динамическая маршрутизация на основе AI сокращает количество неудачных доставок в 2 раза по сравнению со статическим планированием. Ниже — наглядное сравнение.

Параметр Статическое AI-динамическое Улучшение
Failed first delivery 18–25% 8–12% в 2 раза
Остановок на курьера 50–70 70–100 +40%
Cost per delivery 100% 72–85% -15–28%
Удовлетворённость (NPS) +25 +45 +20 пунктов

Почему 28–53% стоимости доставки приходится на последнюю милю?

В отличие от магистральной логистики, здесь высокая стоимость визита при малом числе заказов на точку. Курьер может сделать 50–70 доставок за смену, каждая — 5–15 минут. При этом 15–25% первых попыток проваливаются — получателя нет дома, неверный адрес, неудобное время. Повторная доставка стоит почти столько же, сколько первая. AI-оптимизация позволяет снизить эти показатели: failed first delivery падает до 8–12%, а количество успешных остановок на курьера вырастает до 70–100.

Как AI снижает процент неудачных доставок?

ML-модель оценивает вероятность успеха до приезда курьера. Если риск высокий, система предлагает альтернативы: уточнить время через SMS, перенаправить в постамат, объединить с соседним заказом. Признаки: история получателя, тип адреса (бизнес-центр или жилой дом), день недели, способ оплаты. За счёт этого failed first delivery падает до 8–12%. Модель обучается на ваших данных и учитывает сезонность, праздники и погоду.

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

Мы строим систему на стеке: Python, OR-Tools для маршрутизации, OSRM для матриц расстояний, CatBoost для прогноза. Динамическое перепланирование — ключевая фича. Если курьер не застал получателя, маршрут в реальном времени перестраивается, а неудачная точка уходит в пул на следующий день. Для прогнозирования успеха мы используем градиентный бустинг (CatBoost) — он даёт прирост точности на 5–7% по сравнению с логистической регрессией.

import requests from ortools.constraint_solver import routing_enums_pb2 from ortools.constraint_solver import pywrapcp import numpy as np class LastMileOptimizer: def __init__(self, osrm_url="http://router.project-osrm.org"): self.osrm_url = osrm_url def get_travel_times(self, locations): """Матрица времён через OSRM table service""" coords = ";".join(f"{lon},{lat}" for lat, lon in locations) url = f"{self.osrm_url}/table/v1/driving/{coords}" r = requests.get(url, params={"annotations": "duration"}) return np.array(r.json()["durations"]) def reoptimize_on_event(self, current_routes, new_event): """ new_event: {'type': 'failed_delivery'|'new_order'|'traffic', 'location_idx': int, 'details': dict} """ if new_event['type'] == 'failed_delivery': route = current_routes[new_event['courier_id']] route.remove(new_event['location_idx']) self.reschedule_failed(new_event['location_idx']) elif new_event['type'] == 'new_order': best_courier, best_position = self._cheapest_insertion( current_routes, new_event['location'] ) current_routes[best_courier].insert(best_position, new_event['location']) return current_routes def _cheapest_insertion(self, routes, new_location): min_cost = float('inf') best = (0, 0) for courier_id, route in routes.items(): for pos in range(len(route)): cost = self._insertion_cost(route, pos, new_location) if cost < min_cost: min_cost = cost best = (courier_id, pos) return best 

Мы используем векторные базы (Pinecone) для быстрого поиска ближайших постаматов и оркестрацию на Kubernetes. Средняя latency пересчёта маршрута — 200 мс, что позволяет реагировать в реальном времени. В качестве метода перепланирования применяем cheapest insertion — он обеспечивает скорость и близкое к оптимальному решение.

Сравнение моделей прогнозирования

Модель Точность (F1) Время обучения Интерпретируемость
Логистическая регрессия 0.72 5 мин высокая
CatBoost 0.85 20 мин средняя
LightGBM 0.83 15 мин средняя
Нейронная сеть (MLP) 0.87 2 ч низкая

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

Как мы обеспечиваем точность прогноза

Мы используем three-way validation: offline test на исторических данных, A/B-тест в «теневом» режиме и постепенный rollout. Каждая модель проходит проверку на смещение (distribution shift) — если распределение признаков изменилось более чем на 1 стандартное отклонение, система отправляет alert. Для детекции дрейфа применяем Magnitude metric — сравнение средних значений ключевых фич (время доставки, процент отказов) за последние 7 дней.

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

Как выглядит процесс работы над проектом?

  1. Аналитика — изучаем ваши данные: история заказов, геоданные, временные окна, отказы. Оцениваем текущий failed first delivery и cost per delivery.
  2. Проектирование — выбираем модели, настраиваем признаки, проектируем интеграции (WMS, CRM, мобильное приложение курьера). Определяем KPI: снижение failed first delivery минимум на 30%.
  3. Разработка — пишем код, тренируем модели, настраиваем MLOps (MLflow, Weights & Biases на клиенте). Используем техники fine-tuning и quantization для ускорения инференса.
  4. Тестирование — A/B-тест на части потоков: сравниваем с текущим планированием. Фиксируем метрики: latency p99, FLOPS, GPU utilization.
  5. Деплой — разворачиваем в вашем контуре (SageMaker, Vertex AI или on-premise). Обучаем операторов и предоставляем документацию API.

Что входит в разработку?

  • Исходный код и конфигурации
  • Документация API и модели
  • Инструкция для операторов
  • Обучение команды (2–3 воркшопа)
  • Поддержка 3 месяца после запуска

Гарантии качества модели

Наша команда — 5+ лет в AI/ML, 50+ проектов в логистике и ритейле. Используем проверенные методики Vehicle Routing Problem with Time Windows (VRPTW) и best practices MLOps. Гарантируем снижение failed first delivery минимум на 30% относительно вашего текущего показателя.

Свяжитесь с нами, чтобы обсудить ваш проект. Получите консультацию инженера уже сегодня. Закажите разработку под ключ.