Тип работы:
Предмет:
Язык работы:


Эвристический параллельный алгоритм поиска оптимизирующего маршрута на связном графе

Работа №130386

Тип работы

Бакалаврская работа

Предмет

программирование

Объем работы35
Год сдачи2018
Стоимость4800 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
25
Не подходит работа?

Узнай цену на написание


Содержание 2
Введение 3
Актуальность работы 3
Цель работы 4
Теория графов 5
Постановка задачи 6
Сравнение с типовыми задачами 7
Задача коммивояжера 7
Single vehicle pickup and delivery problem with hard windows 7
Поиск кратчайших путей 8
Способы решения 9
Алгоритм имитации отжига (Simulated annealing) 9
Tabu search (TS) 10
Ant colony optimization (ACO) 12
Алгоритм решения 13
Использованные средства 14
Эвристика 14
Параллельность 16
Реализация 17
Архитектура программного комплекса 17
Предобработка 18
Первый этап - “Поиск” 18
Второй этап - “Возврат” 20
Временная сложность 21
Последовательный вариант алгоритма 21
Параллельный вариант алгоритма 23
Тесты 24
Примеры решений 27
Пример 1. 27
Пример 2. 28
Пример 3. 29
Пример 4. 30
Выводы 31
Заключение 32
Список использованных источников 33
Приложение 35

Актуальность работы
В настоящее время поиск лучшего маршрута для путешествий - актуальная тема почти для каждого современного человека. Всё чаще люди пользуются различными информационными системами для туризма и путешествий. Интересных мест в больших городах огромное количество, а способов посетить их все - еще больше. Но может случиться так, что выбранный порядок посещений окажется крайне неэффективным: удастся посетить лишь пару мест, да и те окажутся скучными и не стоящими внимания. В такие моменты на помощь приходят популярные сервисы-путеводники, веб-сайты с их персональными гидами по городу, но все они несовершенны: не позволяют построить маршрут, учитывающий необходимые ограничения, или же не позволяют увидеть все возможные варианты. Для того чтобы решить описанные выше проблемы постоянно разрабатываются новые вспомогательные информационные системы на основе различных алгоритмов, в зависимости от нужды пользователей. При разработке подобных систем со стороны разработчиков встаёт вопрос об организации архитектуры таким образом, чтобы необходимые расчеты производились быстро и без непозволительных трудозатрат.
Представленный в данной работе алгоритм поиска оптимизирующего маршрута позволит реализовать разработчикам собственные проекты под нужды пользователей и в результате туристам и гостям города больше не нужно будет тратить время на составление удобного маршрута.
Результатом этой работы стал комплекс программ позволяющий определить и визуализировать наиболее “интересный” маршрут на графе.
Цель работы
Основной целью данной работы является создание и реализация эффективного алгоритма поиска, способного обрабатывать входные данные и выдавать результат за приемлемое время. Также должен быть проведен анализ схожих задач и подходов к их решению, для составления наиболее полной картины в данной сфере. В дополнение должна быть сформирована архитектура программного комплекса, позволяющая в короткие сроки и без чрезмерных усилий встроить реализованный алгоритм в свою структуру, не закрывая при этом доступа к модификации и расширению возможностей.
Теория графов
Формулировка нашей задачи содержит в себе термины из теории графов, а алгоритм был разработан с целью решения вычислительных проблем которые могут быть сведены к поиску нужных путей в графах. Следовательно, базовые знания из теории графов помогут понять как проблему, так и ее решение. Далее будут описаны несколько основных определений. Следующие определения взяты из [1].
• Конечный граф G состоит из двух конечных множеств V и E . Элемент v из V называется вершиной (узлом), а элемент е из E называется ребром. Если необходимо указать принадлежность вершины или ребра к графу пишется V(G) или E(G) соответственно.
• Маршрутом (путем) в графе называется чередующаяся последовательность вершин и ребер v0, e0>1, v1, ..., ek.1;k, vk, в которой любые два соседних элемента инцидентны. Если v0 = vk, то маршрут замкнут, иначе открыт. В условиях нашей задачи рассматривается поиск именно замкнутого маршрута, который будет обозначаться P.
• Путь называется простым, если не проходит дважды через одно ребро.
• Граф называется связным, если между каждой парой вершин существует как минимум один путь.
• Полный граф — граф, в котором для каждой пары вершин v1 v2, существует ребро, инцидентное v1 и инцидентное v2 (каждая вершина соединена ребром с любой другой вершиной).

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


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


1. J. Harris, J.L. Hirst, and M. Mossinghoff. Combinatorics and Graph Theory. Springer, 2009.
2. Задача коммивояжера и методы ее решения. http://mech.math.msu.su/~shvetz/54/inf/perl-problems/chCommisVoyageur. xhtml
3. The Single Vehicle Pickup and Delivery Problem with Time Windows: Intelligent Operators for Heuristic and Metaheuristic Algorithms. https://users.cs.cf.ac.uk/C.L.Mumford/papers/M Hosny.pdf
4. Базовые алгоритмы нахождения кратчайших путей во взвешенных графах
https://habrahabr.ru/post/119158/
5. Simulated annealing
https://habrahabr.ru/post/209610/
6. ThreadPool Class msdn documentation https://msdn.microsoft.com/ru-ru/library/system.threading.threadpool(v=vs.1 10).aspx
7. Bellman-Ford algorithm https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford algorithm.
8. A Tabu Search Heuristic for the Vehicle Routing Problem http://www.jstor.org/stable/2661622
9. TABU SEARCH FUNDAMENTALS AND USES by Fred Glover US West Chair in Systems Science Graduate School of Business https://pdfs.semanticscholar.org/e8be/8666bfe90eda68f7a5fe4723c7f8e1d1c 9c3.pdf
10. Tabu search
https: // en.wikipedia.org/wiki/T abu_search
11. Ant colony optimization
https://en.wikipedia.org/wiki/Ant colony optimization algorithms


Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ