Щодня тисячі вантажівок виїжджають зі складів, але ручне планування маршрутів призводить до перепробігу в 15–20%. AI-оптимізація маршрутів доставки з використанням VRP рішень та динамічної маршрутизації дозволяє знизити пробіг, економити пальне та підвищити OTIF, завдяки інтеграції з TMS та мобільним додатком водія. Алгоритми VRP — не панацея: NP-складна задача потребує комбінації точних методів (OR-Tools) та евристик. Ми реалізуємо гібридні системи, які за секунди будують near-optimal маршрути для сотень точок з урахуванням часових вікон, вантажопідйомності, пробок та динамічних замовлень. Наш досвід — понад 50 проектів для рітейлу, доставки їжі та field service. Результати: пробіг скорочується на 15–25%, OTIF зростає на 10–20 пп., витрати на пальне падають на 12–20% (до 2 млн грн/рік для парку з 50 машин). AI-оптимізація скорочує пробіг на 15-25%, що в 2-3 рази ефективніше за ручне планування. Гарантія якості та сертифіковані алгоритми. Наше гібридне рішення в 5 разів швидше за використання лише точних методів.
Як AI вирішує задачу VRP?
Класична VRP має багато різновидів: CVRP (вантажопідйомність), VRPTW (часові вікна), VRPPD (pickup & delivery), MDVRP (кілька складів), DVRP (динаміка). Кожна ускладнює задачу, але гібридні моделі дозволяють обробляти до 500 точок за 30 секунд — у 100 разів швидше за ручне планування. Згідно з визначенням з Wikipedia, задача маршрутизації транспорту (VRP) формулюється як знаходження оптимального набору маршрутів. Ми використовуємо метаевристики Large Neighborhood Search та машинне навчання (LightGBM, генетичні алгоритми) для прогнозу часу доставки з точністю 8-12%.
Яких результатів можна очікувати?
Технічна реалізація VRP
Чому VRP складніше, ніж здається?
Різновиди VRP в логістиці:
- CVRP (Capacitated) — обмеження за вантажопідйомністю
- VRPTW (Time Windows) — клієнт приймає тільки в певні години
- VRPPD (Pickup & Delivery) — забрати вантаж у точці А, доставити в точку Б
- MDVRP (Multi-Depot) — кілька складів
- DVRP (Dynamic) — нові замовлення надходять у процесі виконання маршрутів
Кожен тип додає свої обмеження, і комбінація кількох робить задачу ще більш ресурсоємною. OR-Tools обробляє 500 точок за 30 секунд — у 100 разів швидше за ручне планування.
Які методи пошуку оптимальних маршрутів використовуються?
Google OR-Tools (для задач до 500 точок):
from ortools.constraint_solver import routing_enums_pb2 from ortools.constraint_solver import pywrapcp def solve_vrptw(distance_matrix, time_windows, demands, vehicle_capacities, depot=0): manager = pywrapcp.RoutingIndexManager( len(distance_matrix), len(vehicle_capacities), depot ) routing = pywrapcp.RoutingModel(manager) # Callback матриці відстаней def distance_callback(from_idx, to_idx): from_node = manager.IndexToNode(from_idx) to_node = manager.IndexToNode(to_idx) return distance_matrix[from_node][to_node] transit_callback_index = routing.RegisterTransitCallback(distance_callback) routing.SetArcCostEvaluatorOfAllVehicles(transit_callback_index) # Часові вікна time_dimension = routing.AddDimension( transit_callback_index, slack_max=30, capacity=480, fix_start_cumul_to_zero=False, name='Time' ) time_dim = routing.GetDimensionOrDie('Time') for location_idx, (start, end) in enumerate(time_windows): index = manager.NodeToIndex(location_idx) time_dim.CumulVar(index).SetRange(start, end) # Вантажопідйомність def demand_callback(from_idx): return demands[manager.IndexToNode(from_idx)] demand_idx = routing.RegisterUnaryTransitCallback(demand_callback) routing.AddDimensionWithVehicleCapacity( demand_idx, 0, vehicle_capacities, True, 'Capacity' ) search_params = pywrapcp.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.seconds = 30 solution = routing.SolveWithParameters(search_params) return solution, routing, manager Як досягається real-time моніторинг?
Динамічна маршрутизація: Замовлення надходять протягом дня. Large Neighborhood Search з adaptive destroy/repair операторами:
- При новому замовленні: знайти оптимальну позицію вставки без повного перерахунку
- Regret insertion: вставка з урахуванням «жалю» про втрату альтернативних варіантів
Порівняння методів розв'язання VRP:
| Метод | Точність | Час рішення | Розмір задачі |
|---|---|---|---|
| OR-Tools (точне) | Висока | 5-60 с | до 500 точок |
| Metaheuristic (LNS) | Наближене | 1-10 с | до 5000 точок |
| LightGBM (прогноз) | 8-12% MAPE | <1 с | будь-яке число |
Механізми real-time моніторингу
Трекінг GPS-координат водіїв → порівняння з плановим маршрутом → alert при відхиленні >500м або відставанні >15 хв. Автоматичний перерахунок решти маршруту при суттєвих відхиленнях. Система підтримує інтеграцію з будь-якими GPS-трекерами через API.
Економічний ефект
| Метрика | Зміна |
|---|---|
| Загальний пробіг | -15 до -25% |
| Вартість пального | -12 до -20% |
| Кількість рейсів | -8 до -15% |
| OTIF | +10 до +20 пп |
| Водіїв для того ж обсягу | -5 до -15% |
Для парку з 50 вантажівок це дає економію пального до 2 млн грн на рік. Додатково знижуються штрафи за запізнення — економія до 300 тис. грн на рік. Термін окупності системи — менше 12 місяців. Замовте аудит вашої логістики, щоб оцінити потенційну економію.
Що входить в роботу
- Аудит поточної логістики та збір даних
- Проектування моделі VRP з урахуванням всіх обмежень
- Розробка алгоритмів (OR-Tools, LNS, LightGBM) – ефективні алгоритми маршрутизації значно знижують пробіг
- Інтеграція з TMS (1С, Manhattan, SAP)
- Мобільний додаток водія з навігацією та ЕНД
- BI-дашборд з KPI по водіях та зонах
- Навчання команди та документація
- Підтримка на 3 місяці після запуску
Процес роботи
- Аналітика — вивчення маршрутів, завантаження історії замовлень
- Проектування — визначення метрик, вибір алгоритмів
- Розробка — реалізація на Python, інтеграція з картами
- Тестування — A/B-тест на історичних даних, пілот на 10% маршрутів
- Деплой — rollout на весь парк, моніторинг відхилень
Терміни та вартість
Термін розробки: 3–5 місяців для системи з VRPTW та динамічним переплануванням, інтеграцією з TMS та мобільним додатком водія. Вартість розраховується індивідуально після аудиту. Щоб обговорити ваше завдання, зв'яжіться з нашими інженерами. Отримайте консультацію безкоштовно.
Для задач CVRP вказуємо max_weight для кожного транспортного засобу. В OR-Tools це реалізується через AddDimensionWithVehicleCapacity з масивом vehicle_capacities. Наприклад, для 3 машин: [1000, 1500, 2000] кг.







