AI Delivery Route Optimization System Development

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Delivery Route Optimization System Development
Medium
~1-2 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1212
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    852
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    822

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

Vehicle Routing Problem — задача, которую каждый логистический оператор решает ежедневно заново. При 50 точках доставки и 10 машинах число возможных маршрутов превышает 10⁶⁴. AI находит near-optimal решение за секунды с учётом временных окон, грузоподъёмности и пробок.

Постановка задачи маршрутизации

Разновидности VRP в логистике:

  • CVRP (Capacitated): ограничение по грузоподъёмности
  • VRPTW (Time Windows): клиент принимает только в определённые часы
  • VRPPD (Pickup & Delivery): забрать груз в точке А, доставить в точку Б
  • MDVRP (Multi-Depot): несколько складов
  • DVRP (Dynamic): новые заказы поступают в процессе выполнения маршрутов

Алгоритмы оптимизации

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

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

Заказы поступают в течение дня. Large Neighborhood Search с adaptive destroy/repair операторами:

  • При новом заказе: найти оптимальную позицию вставки без полного пересчёта
  • Regret insertion: вставка с учётом «сожаления» о потере альтернативных вариантов

Учёт реального трафика

Матрица расстояний и времени в пути:

  • OSRM (Open Source Routing Machine): self-hosted, ~50ms на запрос 100×100 матрицы
  • HERE Routing API / Google Maps Platform: более точные данные о пробках, платно
  • Исторические данные пробок: час → средняя скорость по каждому сегменту дороги

Прогноз времени доставки:

GBDT (LightGBM) на признаках:

  • Час, день недели, праздники
  • Текущая загруженность дорог (API Яндекс.Карт / 2GIS)
  • Погода (скорость и вес машины влияют на время)
  • Тип зоны (центр города vs. промзона)

MAPE прогноза времени прибытия: 8–12% для внутригородской доставки.

Экономический эффект

Метрика Изменение
Общий пробег -15 до -25%
Стоимость топлива -12 до -20%
Кол-во рейсов -8 до -15%
OTIF +10 до +20 пп
Водителей для того же объёма -5 до -15%

Real-time мониторинг:

Трекинг GPS-координат водителей → сравнение с плановым маршрутом → alert при отклонении >500м или отставании >15 мин. Автоматический пересчёт оставшегося маршрута при существенных отклонениях.

Интеграция

  • TMS (1С:Транспортное предприятие, Manhattan TMS): двусторонний обмен заказами и маршрутами
  • Мобильное приложение водителя: turn-by-turn навигация, подтверждение доставки, ЭПД (электронная транспортная накладная)
  • Клиентские уведомления: SMS/push с ETA, возможность переноса доставки
  • BI-дашборд: KPI по водителям, зонам, клиентам

Срок разработки: 3–5 месяцев для системы с VRPTW и динамическим перепланированием, интеграцией с TMS и мобильным приложением водителя.