Введение 3
Обзор литературы 4
Постановка задачи TSP 6
Глава 1. Математическая модель задачи TSP 8
Глава 2. Анализ существующих подходов решения TSP 9
2.1. Жадные алгоритмы 10
2.2. Муравьиный алгоритм 13
2.3. Метод ветвей и границ 14
2.4. Метод имитации отжига 16
Глава 3. Математическое описание метода отжига 19
Глава 4. Динамическая адаптация метода отжига 21
4.1. Временная состоятельность 21
4.2. Описание работы динамической адаптации 23
4.3. Применение динамической адаптации 24
Заключение 27
Список используемой литературы 28
Приложение 31
На сегодняшний день задача поиска кратчайшего пути между двумя пунктами является весьма востребованной: объем рынка транспортно-логистических услуг растет с каждым днем. Их главная цель — построение наиболее точного маршрута для обслуживания максимального количества клиентов. При этом очень важно учитывать, что выбор неудачного пути повлечет за собой дополнительные издержки.
Однако существует набор факторов, характеризующий продолжительность прохождения пути: время суток, погодные условия, а также «нагруженность» прохождения того или иного участка. Причем необходимо учитывать их взаимосвязь. Например, участок улицы между двумя перекрестками в разное время суток имеет разную загрузку: большую в час пик, а значит, длительность его прохождения отличается от ночного; погодные условия: туман, дождь - все это влияет на время прохождения участка.
Задача коммивояжера или TSP (Travelling Salesman Problem) - задача математического программирования, имеющая перед собой цель определить оптимальный маршрут движения торговца, которому необходимо побывать во всех пунктах, записанных в задании, за минимальное время и с наименьшими затратами. Аналогом для теории графов является поиск пути между двумя и более узлами с использованием критерия оптимальности [1].
Алгоритмы, позволяющие решить данную проблему, можно разделить на точные и эвристические. Для небольших задач (например, в целях первичного проектирования транспортной сети малых размеров) целесообразно будет использовать точные алгоритмы, так как для их реализации необходимы высокие вычислительные мощности, чего нельзя сказать о реальных задачах: как правило, для них необходимо использовать эвристические алгоритмы.
TSP является типичной задачей оптимизации, которая широко применяется при разработке программного обеспечения. Задача о коммивояжере представляет собой упрощенную модель для многих других задач дискретной оптимизации, а также часто является подзадачей. Она служит катализатором, стимулирующим разработку наиболее эффективных методов, алгоритмов и способов их машинной реализации.
Задача коммивояжера формулируется очень просто: на плоскости (в пространстве) расположены N городов, заданы расстояния между каждой парой городов. Необходимо отыскать маршрут минимальной длины, посетив каждый города единожды и вернувшись в исходную точку. Однако стоит отметить, что это определение не учитывает возможность хаотичного изменения начальных данных задачи в процессе прохождения маршрута коммивояжером.
В данной работе были исследованы различные эвристические подходы, необходимые для решения задач данного типа. Среди изученных подходов выбор был остановлен на методе имитации отжига. Реализация метода была осуществлена на языке Javascript и рассмотрена на тестовых данных. Проанализировав полученные данные, было выявлено преимущество использования эвристики перед жадным алгоритмом и полным перебором. К тому же, эвристика не дает оптимального решения, что было показано при вычислении оценки уровня временной состоятельности алгоритма, среднее значение величины которого равно 0.314. В ходе проведения работы был разработана процедура динамической адаптации метода имитации отжига, впоследствии реализованная в программном коде. При проверке полученных результатов было выявлено, что значение решения, сгенерированного данным алгоритмом, меньше, чем алгоритмом имитации отжига. Улучшение значения решения в экспериментах для задачи с различным количеством узлов принимает до 15,6%. Результаты показали, что использование на практике алгоритма динамической адаптации позволяет генерировать маршруты меньшей длины, и, соответственно, меньшие по времени.