Открыть сервис

Vehicle Routing Problem

Vehicle Routing Problem (VRP, задача маршрутизации транспорта) — это класс оптимизационных задач комбинаторной математики, в которых требуется найти оптимальный набор маршрутов для парка транспортных средств, обслуживающих заданное множество пунктов (клиентов, точек доставки). Целью решения VRP является минимизация общих затрат (времени, расстояния, топлива, количества транспортных средств) при соблюдении набора ограничений, таких как грузоподъёмность, временные окна, приоритеты обслуживания и дорожные условия. VRP является обобщением классической «задачи коммивояжёра» (TSP) и относится к NP-трудным задачам, что означает отсутствие известного алгоритма точного решения за полиномиальное время для больших размерностей.

История

Первые формальные постановки задачи маршрутизации транспорта появились в 1950-х годах в связи с развитием логистики и операционных исследований. В 1959 году американские математики Джордж Данциг и Джон Рэмсер впервые описали задачу с несколькими транспортными средствами, которая получила название «задача маршрутизации автомобилей» (Vehicle Routing Problem). В 1964 году Кларк и Райт предложили эвристический алгоритм «сбережений» (Clarke-Wright savings algorithm), который до сих пор используется как базовый метод для приближённого решения VRP.

В 1970-е годы, с развитием вычислительной техники, началось активное исследование точных методов (ветвей и границ, динамическое программирование) и метаэвристик (генетические алгоритмы, имитация отжига). В 1980-х годах появились первые коммерческие системы оптимизации маршрутов, интегрированные с системами GPS и управления автопарком. В 1990-е годы VRP стала стандартной задачей в исследованиях операций и логистике, а в 2000-е — с появлением больших данных и облачных вычислений — получила широкое распространение в сервисах доставки, такси и курьерских службах.

Классификация

VRP включает множество вариантов, различающихся по типу ограничений и целям. Основные разновидности:

Математическая постановка

Классическая CVRP может быть формализована следующим образом. Пусть имеется граф \( G = (V, E) \), где \( V = \{0, 1, \dots, n\} \) — множество вершин, причём вершина 0 — депо, а вершины \( 1, \dots, n \) — клиенты. Каждому клиенту \( i \) приписан спрос \( q_i > 0 \). Каждому ребру \( (i, j) \) приписана стоимость \( c_{ij} \) (расстояние, время или топливо). Имеется \( K \) идентичных транспортных средств вместимостью \( Q \). Требуется найти набор маршрутов (циклов, начинающихся и заканчивающихся в депо), таких что:

Математически это задача целочисленного линейного программирования с переменными \( x_{ij}^k \in \{0, 1\} \), обозначающими, проезжает ли транспортное средство \( k \) по ребру \( (i, j) \). Ограничения включают:

Методы решения

Из-за NP-трудности VRP для практических задач (с числом клиентов более 50–100) точные методы становятся неприменимы. Используются следующие подходы:

Точные методы

Эвристические методы

Метаэвристики

Гибридные методы

Применение

VRP имеет широкое практическое применение в различных отраслях:

Примеры

Пример 1: Доставка пиццы. Пусть имеется 10 заказов от клиентов, разбросанных по городу, и один курьер на мотоцикле. VRP без ограничения по грузоподъёмности (все заказы помещаются) сводится к задаче коммивояжёра — требуется найти кратчайший маршрут, посещающий всех клиентов и возвращающийся в пиццерию. Решение может быть найдено алгоритмом Кларка-Райта или метаэвристикой.

Пример 2: Развоз товаров по магазинам. У оптового склада имеется 5 грузовиков вместимостью 10 тонн каждый. 30 магазинов заказали товары общим весом 40 тонн. CVRP решает, какие магазины обслуживать каждым грузовиком, чтобы суммарный пробег был минимальным, а каждый грузовик не превышал 10 тонн. Решение может быть найдено генетическим алгоритмом или поиском с запретами.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →