Впровадження AI-оптимізованої оптимізації логістичних маршрутів
Логістичні маршрути - це NP-складна задача (Vehicle Routing Problem). Перерахування всіх варіантів для 50 пунктів доставки неможливе навіть на суперкомп'ютері. AI застосовує комбінацію метаевристик та навчання з підкріпленням для отримання близько-оптимальних розв'язків за секунди.
Математична постановка задачі
VRP та його варіанти
Базовий VRP: N клієнтів, M транспортних засобів з одного складу, мінімізація загальної відстані. Реальні завдання складніше:
- VRPTW (Time Windows): кожна точка повинна бути відвідана в заданому інтервалі
- CVRP (Capacitated): обмеження вантажопідйомності
- MDVRP (Multi-Depot): кілька складів
- DVRP (Dynamic): нові замовлення з'являються в режимі реального часу
- VRPPD (Pickup and Delivery): пари прибирання та доставки
Реальна проблема для великої логістичної компанії — все вищезазначене одночасно.
AI-підходи до оптимізації
Навчання з підкріпленням (Attention Model)
Архітектура на основі Transformer (Attention Model, Kool et al.) вчиться "конструювати" маршрут, додаючи точки по одній. Політика: в якому порядку відвідати точки для максимальної винагороди (мінімальної відстані).
Переваги: після навчання, висновок складає мілісекунди за маршрут будь-якого розміру. Узагальнює нові екземпляри без перенавчання.
# Приклад з Google OR-Tools як базова лінія + поліпшення RL
from ortools.constraint_solver import routing_enums_pb2, pywracp
def solve_vrptw(locations, time_windows, demands, vehicle_capacities):
manager = pywracp.RoutingIndexManager(len(locations), len(vehicle_capacities), 0)
routing = pywracp.RoutingModel(manager)
# Додавання обмежень
transit_callback_index = routing.RegisterTransitCallback(...)
routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index)
# Часові вікна
time_dimension = routing.GetDimensionOrDie('Time')
for node, (start, end) in enumerate(time_windows):
index = manager.NodeToIndex(node)
time_dimension.CumulVar(index).SetRange(start, end)
search_params = pywracp.DefaultRoutingSearchParameters()
search_params.first_solution_strategy = (
routing_enums_pb2.FirstSolutionStrategy.PATH_CHEAPEST_ARC)
search_params.local_search_metaheuristic = (
routing_enums_pb2.LocalSearchMetaheuristic.GUIDED_LOCAL_SEARCH)
search_params.time_limit.FromSeconds(30)
solution = routing.SolveWithParameters(search_params)
Гібрид: Метаевристики + ML
Генетичний алгоритм або імітація відпалу для глобального пошуку + ML-модель для швидкої оцінки якості рішення (модель-замінник замість дорогої повної оцінки). Прискорення оптимізації в 5–20 разів.
Динамічна переробка маршруту
Нове замовлення → негайна інтеграція в поточні маршрути без повного перерахування. Принцип: знайти "найкращу щілину" в існуючих маршрутах за допомогою евристики вставлення + ML оцінка вартості вставлення.
Врахування реальних факторів
Динамічні дані в режимі реального часу:
- Рух (HERE Traffic API, Yandex.Traffic)
- Погодні умови (вплив на час у дорозі та доступність доріг)
- Статус водіїв (перерви, робочий час EU Tachograph)
- Статус автомобіля (телематика, паливо)
Прогнозування часу в дорозі
ML-модель прогнозування часу в дорозі враховує: історичну швидкість за сегментами, час доби, день тижня, святки, погоду. LSTM/Transformer на часових рядах GPS-доріжок. Похибка прогнозування: MAE 2–5 хвилин для міських маршрутів проти 8–15 хвилин для статичних карт.
Результати оптимізації
Порівняння з ручним плануванням:
- Скорочення пробігу: -12–22%
- Скорочення кількості машин для того ж об'єму доставок: -10–18%
- Збільшення відсотка доставок у часовому вікні: +15–25 п.п.
- Час планування: з 2–4 годин ручного на 30–90 секунд автоматично
ROI: для автопарку 50+ транспортних засобів повернення інвестицій упродовж 6–12 місяців лише за рахунок палива та трудозатрат на планування.
Інтеграції
TMS-системи (1C:TMS, SAP TM, Oracle TMS), ERP для отримання замовлень, GPS-трекінг водіїв, додатки для водіїв (Android/iOS), сповіщення клієнтам (SMS, WhatsApp, email) з часовими вікнами доставки.







