← В библиотеку

УДК 004.021

Разработка ПО оптимизации логистики поставок продукции

Д.П. Хубеджев, О.Д. Ситникова

Донецкий национальный технический университет

hubedjev.d.p@gmail.com, olga_d_s@mail.ru

Хубеджев Д.П., Ситникова О.Д. Формализация задачи логистики поставок и разработка ПО для формирования оптимальных маршрутов. В статье представлен модифицированный метод Кларка-Райта для решения задач развозки. Модификации позволили реализовать данный метод для работы с более точными данными, полученными с помощью сервисов Google Maps.

Ключевые слова: логистика, задача развозки, метод Кларка-Райта, маршрут, Google Maps.

Введение

Актуальность проблемы выражена в динамичном развитии розничной торговли, связанная с постоянно изменяющимися факторами внешней среды и обострением конкуренции. Товародвижение является достаточно сложной системой, динамически изменяющейся под влиянием внутренних и внешних факторов, имеющая диверсификационные взаимодействия. Таким образом, оптимизации и рационализации товародвижения не всегда достигают наивысших результатов, из-за сложности получения или переработки информации, способности к принятию решений. Преобразования логистических систем товародвижения розничных торговых предприятий в последние годы в значительной степени связаны с трансформацией отношений в контексте элементов логистической системы.

Целью работы является оптимизация алгоритма Кларка-Райта для более точных данных, полученных с помощью сервисов Google Maps.

Характеристика существующих программных средств

На сегодняшний день, существующие программные системы заточены под определенные особенности предприятий. При этом, программные продукты малоизвестны и в общем доступе их найти или невозможно, или крайне маловероятно. Однако продукты, что попали в сеть не являются Open Source проектами, а их функционал или не соответствуют современным платформам, или имеет ограниченный функционал.

Из этого следует, что существующие программные проекты не соответствуют критериям предполагаемого продукта, либо перенасыщены дополнительными функциями.

Особенности:

Достоинства:

Недостатки:

Задача развозки грузов, как оптимизация схем транспортировки

Задача развозки – это транспортная задача по доставке мелкопартионных грузов из распределительного центра, например, оптовой базы, склада, грузового терминала и пр., множеству получателей, расположенных в районе развозки. Данная задача включает в себя построение радиальных и кольцевых маршрутов для минерализации финальной величины длинны. Когда объем, запрашиваемый получателем, больше или равен грузоподъемности автомобиля, используются радиальные маршруты,. По математической модели рассматриваемая задача является задачей нескольких коммивояжеров, а значит относится к классу NP-трудных.

Метод Кларка-Райта является одним из алгоритмов, решающих задачу развозки. В данном алгоритме вводится понятие выигрышей для оценки операций слияния маршрутов. Выигрыш являет собой меру сокращения стоимости, достигаемую благодаря комбинированию двух небольших маршрутов в один. Из этого следуют такие достоинства: простота, надежность и гибкость, при погрешности решения не превосходящей в среднем 5-10%.

Так же недостатком данного алгоритма является получение пути из одной точки в другую и обратно, как одинакового расстояния, что может не соответствовать действительности. Для решения данной проблемы в алгоритм были внесены модификации.

Описание модифицированного алгоритма Кларка-Райта

Суть метода заключается в пошаговом переходе к оптимальной схеме развозки с кольцевыми маршрутами. Для этого вводится понятие — километральный выигрыш.

На рисунке 1 показаны две схемы доставки.

Рисунок 1 — Схемы доставки

На схеме доставке A отображается доставка грузов по радиальным маршрутам в пункты 1 и 2. В этом случае суммарный пробег автотранспорта равен:


LA = d01 + d10 + d02 + d20
(1)

Схема доставки B предполагает доставку грузов по кольцевому маршруту в пункты 1 и 2. Тогда пробег автотранспорта составляет:


LB = d01 + d12 + d20
(2)

Схема B, обычно дает лучший результат по пробегу, по сравнению со схемой A. При переходе к такой схеме рассчитывается километральный выигрыш:


S12 = LA − LB = d10 + d02 − d12
(3)

В общем случае мы имеем такую формулу:


Sij = di0 + d0j − dij
(4)

Где:

а) Sij — километральный выигрыш, км;

б) d0i, d0j — расстояние между пунктами i и j и складом соответственно, км;

в) dij — расстояние между пунктами i и j, км. 

  Описать основную часть алгоритма можно в 6 шагах:

Шаг 1 — находим ячейку (i*, j*) с максимальным километральным выигрышем Smax на матрице километральных выигрышей:


Smax = maxi, jS(i,j) = S(i*,j*)
(5)

При поиске максимального элемента нужно учесть ряд условий:

а) точки i* и j* не входят в состав одного и того же маршрута;

б) точка i* или j* является начальным или конечным пунктом, того маршрута, в который он войдет, а другая точка не используется в других маршрутах;

в) точки i* и j* является начальным и конечным пунктом, тех маршрутов, которые они объединяют;

г) ячейка (i*, j*) или (j*, i*) не использовались ранее.

Если удалось найти такую ячейку, которая удовлетворяет трем указанным условиям, то переход к следующему шагу. Если нет, то к шагу 4.

Если точки i* и j* не использовались в других маршрутах, то создать новый.

Шаг 2 — проверить выполнения условия грузоподъемности на протяжении всего маршрута:


Q + q ≤ c
(6)

Где:

а) Q Q— общее количества груза требуемого маршрутом;

б) q — количество требуемого товара на добавляемую точку;

в) с — грузоподъемность транспорта. 

Если условие выполняется, то переход к шагу 3, если нет – к шагу 1.

Шаг 3 — добавляем полученную точку в начало/конец маршрута и возвращаемся к шагу 1.

Шаг 4 — рассчитываем суммарное расстояние, которое необходимо пройти для покрытия всех маршрутов.

Оценка сложности алгоритма

За основу реализованного алгоритма был взят алгоритм Кларка-Райта и были внесены в него оптимизации позволяющие сделать вычисления с помощью более реальных данных. Оптимизации сделаны не увеличивая общей сложности алгоритма, хотя и увеличивает общее количество шагов, которые должен сделать алгоритм. В связи с этим в основу алгоритма Кларка-Райта были добавлены дополнительные проверки, не уменьшающие эффективность и уменьшающие количество проходов в цикле, что бы покрыть затраты времени на большее количество шагов.

Сложность алгоритма равна:


O(N ) * (O(N2)+O(N)) = O(N3) + O(N2) = O(N3)
(7)

Такая сложность является более чем допустимой, так как задачи, имеющие такую сложность, могут обрабатывать довольно большие объёмы данных за допустимое время.

Данные о соответствии времени от размерности выборки отображены в таблице 1.

Таблица 1 – Форматирование страницы в статье

Размерность выборки Время
100 заявок До 1 секунды
200 заявок 7 секунд
300 заявок 34 секунд
500 заявок 4 минуты 22 секунды
1000 заявок 71 минута 24 секунды

Результаты тестирования подтверждают расчеты и соответствует выведенной формуле сложности (см. формулу 7).

Выводы

Был изучен и модифицирован метод Кларка-Райта для решения задач развозки. Модификации позволили реализовать данный метод для работы с более точными данными, полученные с помощью сервиса Googl Maps. Описан алгоритм с включенными в него модификациями и проведены тесты, показывающие, что с данными изменениями сложность алгоритма не увеличивается.

Используя данный алгоритм в реальной системе можно добиться уменьшения количества буферных складов и значительно уменьшить расходы на логистику. В перспективе для полноценной программной системы следует разработать сразу набор алгоритмов оптимизации логистики, проработав их взаимосвязь, для получения лучших результатов.

Литература

  1. Гери, М. Вычислительные машины и труднорешаемые задачи / М. Гери, Д. Джонсон. — Москва: Мир, 1982 – 416 с.

  2. Логистика [Электронный ресурс] // Википедия — Режим доступа: https://ru.wikiversity.org/wiki/Логистика — Загл. с экрана.

  3. Навигационная система [Электронный ресурс] // Википедия – Режим доступа: https://ru.wikipedia.org/wiki/Навигационная_система — Загл. с экрана.

  4. Метод Кларка-Райта. Оптимальное планирование маршрутов грузоперевозок [Электронный ресурс] // Инфостар — Режим доступа: https://infostart.ru/public/443585/ — Загл. с экрана.

  5. Оценка сложности алгоритма [Электронный ресурс] // Хабр — Режим доступа: https://habr.com/post/104219/ — Загл. с экрана.

  6. Руководство для разработчиков Google Maps Distans API [Электронный ресурс] // Google Maps APIs — Режим доступа: https://developers.google.com/maps/documentation/distance-matrix/intro?hl=ru#unit_systems — Загл. с экрана.