Автоматизация алгоритма Литтла для решения задачи коммивояжера

4. Методы решения нелинейных уравнений математической физики и механики / Полянин А.Д. и др. М. : Физ-матлит, 2005.

5. Агамиров Л.В. Сопротивление материалов. М. : Аст-рель. 2003. 256 с.

6. Власов В.З. Избранные труды. Т. 2: Тонкостенные упругие стержни. Принципы построения общей технической теории оболочек. М. : из-во АН СССР, 1963. 507 с.

7. Ржаницын А.Р. Строительная механика. М. : Высшая школа. 1982. 400 с.

8. Бычков Д.В. Строительная механика стержневых тонкостенных конструкций. М. : Госстройиздат, 1962. 387 с.

9. Новожилов В.В., Черных К.Ф., Михайловский Е.И. Линейная теория тонких оболочек. СПб. : Изд-во С-Пе-терб. ун-та, 2010. 380 с.

10.Тимошенко С.П., Войновский-Кригер С. Пластинки и оболочки. М. : Эдиториал УРСС, 2009. 640 с.

11.Методика расчёта напряжённо-деформационного состояния волноводно-распределительных систем космических аппаратов / П.Н. Сильченко и др. // Журнал СФУ. Сер.: Техника и технологии. 2012. № 2. С. 150161.

12.Анализ динамического состояния волноводно-распре-делительных систем от воздействия вибрационных нагрузок на этапе вывода космического аппарата на орбиту / П.Н. Сильченко и др. // Журнал СФУ. Сер.: Техника и технологии. 2012. № 2. С. 205-219.

13.Александров А.В. Основы теории упругости и пластичности. М. : Высш. шк., 1990. 400 с.

УДК 656.073 Крипак Марина Николаевна,

к. т. н., доцент, кафедра «Управление на автомобильном транспорте», Ангарская государственная техническая академия, тел. (3955) 522-388, e-mail: marikol@yandex.ru

Кулакова Ирина Михайловна, к. т. н., доцент, кафедра «Вычислительные машины и комплексы», Ангарская государственная техническая академия, тел. (3955) 67-43-96, e-mail: iyelkina@mail.ru

Лебедева Ольга Анатольевна, к. т. н., доцент, кафедра «Управление на автомобильном транспорте», Ангарская государственная техническая академия, тел. (3955) 522-388, 89526326611, e-mail: kravhome@mail.ru

АВТОМАТИЗАЦИЯ АЛГОРИТМА ЛИТТЛА ДЛЯ РЕШЕНИЯ ЗАДАЧИ КОММИВОЯЖЕРА

M. N. Kripak, I. M. КпЬакога, O. A. Lebedeva

AUTOMATION OF LITTLE ALGORITHM FOR SOLVING THE PROBLEM OF A SALESMAN

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

Ключевые слова: метод, грузовые перевозки, программа, автоматизация.

Abstract. The problem of traffic routing by traveling salesman method is considered and options for its automation are proposed. A mathematical model with a detailed explanation of the advantages of this method is shown. The interface of the developed software application written in VBA, designed for automated routes processing that can be used for the carriage of goods of commercial, industrial and other organizations by road is presented. The initial data taken are the followingparameters: the number of consignees and shippers, the length of the links of the transport network between the points. The software application provides a definition of the optimum given points detour route for the smallest car run. Testing the effectiveness of the developed software package is supported by experimental studies. For this a specific transport network was considered. Application of the most effective approximate algorithms for solving the traveling salesman problem with respect to the given problem is the object of further research.

Keywords: method, freight transportation, software, automation.

Введение

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

ных способов и методов управления экономической и хозяйственной деятельностью предприятий на основе логистического и системного подходов к организации перевозочного процесса [1].

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

Транспорт

ш

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

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

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

Это обуславливает необходимость разработки достаточно простых и реализуемых на практике за разумное время алгоритмов оптимизации логистических показателей перевозок мелкопартионных грузов на автомобильном транспорте [2, 3].

Основная часть исследования

Одна из самых известных и важных задач транспортной логистики (и класса задач оптимизации в целом) - задача коммивояжера (англ. Travelling salesman problem, TSP). Также встречается название «задача о бродячем торговце». Суть задачи сводится к поиску оптимального, то есть кратчайшего, пути, проходящего через некие пункты по одному разу. Например, задача коммивояжера может применяться для нахождения самого выгодного маршрута, позволяющего коммивояжеру объехать определенные города со своим товаром по одному разу и вернуться в исходную точку. Мерой выгодности маршрута будет минимальное время, проведенное в пути, минимальные расходы на дорогу или, в простейшем случае, минимальная длина пути.

Одним из известных ранних алгоритмов точного решения задачи коммивояжера для общего случая является алгоритм Литтла [4-6], основанный на методе ветвей и границ, который строит дерево решений для перебора вариантов маршрута (циклов обхода) с отсечением.

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

матрица расстояний подвергается такому преобразованию с трудоемкостью 0(п2), чтобы в каждой её строке и каждом столбце появился хотя бы один нуль. Более точную оценку снизу можно получать, решая задачу о назначениях на матрице расстояний за время 0(п3), при этом улучшается эффективность отсечений в дереве решений.

Рассмотрим более подробно реализацию алгоритма Литтла, обобщенно представленную в виде блок-схемы на рис. 1.

Начало

Ввод матрицы расстояний {Cij}

з:

¡=1,11

п - количество пунктов маршрута

Приведение матрицы по строкам

Приведение матрицы по столбцам

Оценка нулевых элементов

Выбор пункта для добавления в маршрут

X

Удаление строки и столбца из матрицы

расстояний

+ ~

Блокировка обратного пути

X

Оценка стоимости маршрута

Вывод маршрута коммивояжера и его стоимости

Рис. 1. Обобщенный алгоритм решения задачи коммивояжёра методом Литтла

На вход алгоритма подается квадратная матрица расстояний [Су] размером п * п, все Су > 0, причём диагональные элементы Си = да. Строки и столбцы матрицы помечаются отрезками маршрута, включёнными в строящийся вариант маршрута.

В самом начале все эти отрезки суть отдельные вершины. Отрезок маршрута, начинающийся

из вершины к и заканчивающийся в вершине I, задаётся парой чисел (к, /). После того как выбрано ребро (/,у), находящееся на пересечении строки, помеченной отрезком (к, /), и столбца, помеченного отрезком (у, I), для вариантов маршрута 1-й группы эти два отрезка объединяются.

Для этого из матрицы расстояний удаляется строка (к, /) и столбец (у /), в результате чего число строк и столбцов матрицы уменьшается на 1. Строка, помеченная отрезком, заканчивающимся в вершине I, и столбец, помеченный отрезком, начинающимся с вершины к, помечаются отрезком (к, /). Кроме того, элемент матрицы на их пересечении заменяется величиной да. Это делается для того, чтобы предотвратить в дальнейшем выбор ребра графа (I, к), замыкающего локальный цикл, не включающий все вершины. Для вариантов маршрута 2-й группы выбранное ребро (/, у) в матрице заменяется величиной да, что предотвращает в последующем выбор этого ребра для маршрута. При этом размер матрицы не изменяется. Когда размер матрицы уменьшится до 2 * 2, если при этом оценка снизу окажется меньше стоимости ранее найденного наилучшего маршрута, то строится окончательный замкнутый маршрут путем включения в него как ребра (/, у), так и ребра (I, к). Стоимость нового маршрута совпадает с его оценкой снизу, и он запоминается как наилучший маршрут среди всех ранее просмотренных. Алгоритм Литтла просматривает строящееся таким образом дерево решений вглубь, в котором сначала делается переход к первой группе вариантов маршрута, а после их просмотра - ко второй группе.

Рассмотрим вариант автоматизации решения задачи маршрутизации перевозок методом коммивояжера.

На рис. 2 представлено диалоговое окно, в котором задаются настройки задачи.

Рис. 2. Диалоговое окно настройки задачи

Далее приложение предлагает подготовить таблицу, то есть ввести название листа, на котором будут вноситься исходные данные (рис. 3).

Рис. 3. Выбор листа для введения исходных данных

На выбранном листе формируется таблица, в которую надо внести название пунктов грузоотправителей и грузополучателей и расстояния между пунктами (рис. 4).

Рис. 4. Таблица для введения исходных данных

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

Далее необходимо нажать кнопку «загрузить матрицу» для загрузки введенных данных в алгоритм расчета.

Для данной матрицы (рис. 5) нахождение оптимального расстояния происходит за четыре итерации.

А Б В Г Д

А х 10 20 27 6

Б 10 >>-< 10 17 16

В 20 10 ><: 7 26

Г 27 17 7 33

Д 6 16 26 33 :><:

Рис. 5. Матрица исходных данных

На данной итерации (рис. 6) происходит нахождение минимального по строкам.

ИТЕРАЦИЯ №1

А М 4 14 21 0

Б 0 М 0 7 6

В 13 3 М 0 19

Г 20 10 0 М 26

Д 0 10 20 27 М

тт 6 10 7 7 6

Рис. 6. Нахождение минимума по строкам

А

Б

В

Г

Д

Транспорт

m

Д

А M 1 14 21 0

Б 0 M 0 7 6

В 13 0 M 0 19

Г 20 7 0 M 26

Д 0 7 20 27 M

min 0 3 0 0

Рис. 7. Нахождение минимума по столбцам

А

Б

В

Г

Д

Рис. 8. Нахождение оценок

А - - - - 7

Б 0 - 0 - -

В - 1 - 7 -

Г - - 7 - -

Д 7 - - - -

Сумма констант приведенеия по строкам =36 Сумма констант приведенеия по столбцам =3 Сумма констант приведенеия всего по матрице =39 Удаляется строка А и столбец Д

А Д

Фиксируется ячейка в строке Д и столбце А

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

Алгоритм повторяется аналогично до того момента, пока матрица не будет иметь размерность 2 х 2.

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

Итоговая цепочка А Д

Заключение

В соответствии с данной методикой разработано программное приложение по проектированию процесса доставки, написанное на языке программирования Visual Basic for Applications (VBA) в среде Excel 2013 под операционную систему MS Windows XP, 7, 8. Интерфейс отличается простотой, надежностью и гибкостью и, после краткого ознакомления, позволяет перейти к полноценной работе с приложением.

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

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1. Крипак М.Н Оптимизация транспортного обслуживания грузовладельцев в пределах крупного города (городской агломерации) : автореф. дис. ... канд. техн. наук / Иркутский государственный технический университет, Иркутск, 2009. 20 с.

2. Колесник М.Н. Применение динамической транспортной задачи с задержками для согласования ритмов работы поставщиков и перевозчиков / Вестник ИрГТУ. 2009. Т. 37. №1. С. 63-65.

3. Лебедева О.А., Антонов Д.В. Особенности грузового движения в городах Приоритетные научные направления: от теории к практике : сб.материалов XIV междунар. науч.-практ. конф. Секц. 12. Технические науки. Новосибирск, 2014. С. 102-106.

4. Little J. D. C., Murty K. G., Sweeney D. W., and Karel C. An Algorithm for the Traveling Salesman Problem // Operations Research. 1963. No. 11. P. 972-989.

5. Рейнгольд Э., Нивергельт Ю., Део Н. Комбинаторные алгоритмы. Теория и практика. М. : Мир, 1980. 478 с.

6. Clark G., Write J. W. Scheduling of Vehicles from Central Depot to a Number Delivery Points // Oper. Res. Quart. 1964. 12, № 4. Р. 568-581.

Д г

Отсортированная цепочка

А

Б

В

Г

0

Результирующий маршрут комивояжера-А-Д-Г-В-Б-А минимальной длины 66