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% відносно вашого поточного показника.

Зв'яжіться з нами, щоб обговорити ваш проект. Отримайте консультацію інженера вже сьогодні. Замовте розробку під ключ.