Применение муравьиных алгоритмов

17
Дипломная работа студента 524 группы Свешникова Сергея Александровича Научный руководитель: Доцент,к.ф.-м.н. Пильщиков Владимир Николаевич

description

Свешников Сергей Александрович

Transcript of Применение муравьиных алгоритмов

Page 1: Применение муравьиных алгоритмов

Дипломная работа

студента 524 группы Свешникова Сергея Александровича

Научный руководитель:

Доцент,к.ф.-м.н. Пильщиков Владимир Николаевич

Page 2: Применение муравьиных алгоритмов

• Муравьиный алгоритм (алгоритм оптимизации подражанием муравьиной колонии, ant colony optimization, ACO) — один из эффективных полиномиальных алгоритмов для нахождения приближённых решений сложных комбинаторных задач.

Page 3: Применение муравьиных алгоритмов

Реализовать алгоритма для задачи поиска максимального независимого множества вершин в графе (МНМ задача)

Определить оптимальных параметров алгоритма для данной задачи

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

Page 4: Применение муравьиных алгоритмов

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

Page 5: Применение муравьиных алгоритмов

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

источник пищи (F) любым способом (а), а затем возвращается к гнезду (N), оставив за собой тропу из феромонов (b).

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

• Муравьи выбирают кратчайший маршрут, так как у более длинных феромоны сильнее испарились.

Page 6: Применение муравьиных алгоритмов

Пока (условия выхода не выполнены)

• 1. Создаём муравьёв

• 2. Ищем решения

• 3. Обновляем феромон

• 4. Дополнительные действия{опционально}

Page 7: Применение муравьиных алгоритмов

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

Page 8: Применение муравьиных алгоритмов

2. Ищем решения

• Вероятность перехода из вершины i в вершину j

определяется по следующей формуле

Page 9: Применение муравьиных алгоритмов

3. Обновляем феромон

• Уровень феромона обновляется в соответствии с приведённой формулой

4. Дополнительные действия

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

Page 10: Применение муравьиных алгоритмов

Для задачи МНМ не существует путей между вершинами, поэтому идея «чем больше феромона на ребре, тем более оно предпочтительно» трансформируется в «чем больше феромона на вершине, тем более она предпочтительна».

Page 11: Применение муравьиных алгоритмов

Если 𝑖𝑝 ∈ 𝑎𝑙𝑙𝑜𝑤𝑒𝑑𝑘

иначе

Page 12: Применение муравьиных алгоритмов

Пусть 𝐹𝑘(𝑡) – множество вершин удовлетворяющих частичному решению 𝑆 𝑘 𝑡 . Локальная эвристика для MISP может быть определена как:

где 𝐹𝑖 = 𝐹𝑘(𝑡 + 1).

Вероятность выбора вершины 𝑖 определяется вероятностью указанной выше. Множество 𝑎𝑙𝑙𝑜𝑤𝑒𝑑𝑘 = 𝑉 −

𝑆 𝑘 𝑡 − 𝑈𝑘 𝑡 , где 𝑈𝑘 𝑡 = 𝑗 𝑗, 𝑖 ∈ 𝐸 ∨ 𝑖, 𝑗 ∈ 𝐸 ∧ 𝑖 ∈

𝑆 𝑘(𝑡)+

𝐺 𝐿𝑘 = 𝑄𝐿𝑘 = 1

|𝑉|𝐿𝑘

Page 13: Применение муравьиных алгоритмов

1. 𝑉 = 8

2. Пусть 𝑆 𝑘 𝑡 = 2 , тогда 𝐹𝑘 𝑡 = 𝑉 − 2 − 1,8 = *3,7,4,5,6+

3. Таким образом наилучшей является вершина 𝑖 = 4

Page 14: Применение муравьиных алгоритмов

Экспериментальным путём были выбраны следующие значения параметров:

𝜶 = 𝟏 𝜷 = 𝟏

N D M

Параметры алгоритма

a=1;b =1 a=5;b =1 a=1;b=5

Hits(%) t Hits(%) t Hits(%) t

100

0,1 70

100

0.2 сек

100

0.17 сек

100

0.21 сек

0,2 60 0.2 сек 0.18 сек 0.21 сек

0,3 50 0.21сек 0.18 сек 0.22 сек

0,4 40 0.21 сек 0.18 сек 0.22 сек

0,5 30 0.21 сек 0.19 сек 0.24 сек

200

0,1 110

100

0.68 сек

95

0.59 сек

100

0.71 сек

0,2 100 0.68 сек 0.59 сек 0.7 сек

0,3 90 0.69 сек 0.59 сек 0.72 сек

0,4 80 0.67 сек 0.6 сек 0.73 сек

0,5 70 0.68 сек 0.6 сек 0.72 сек

300

0,1 150

100

1.7 сек

80

1.62 сек

100

1.91 сек

0,2 140 1.7 сек 1.62 сек 1.92 сек

0,3 130 1.71 сек 1.64 сек 1.93 сек

0,4 120 1.7 сек 1.62 сек 1.93 сек

0,5 110 2 сек 1.62 сек 1.93 сек

Page 15: Применение муравьиных алгоритмов

Кол-во вершин в графе

Время работы(среднее)

Муравьиный алгоритм

Брон-Кербош Перебор

10 0.001 сек 0.001 сек 0.001 сек

50 0.001 сек 0.004 сек 15 сек

100 0.2 сек 0.6 сек 1 мин 25 сек

200 0.68 сек 16.5 сек -

300 1.7 сек 1 мин 19 сек -

500 5.6 сек 10 мин -

1000 18.9 сек 1ч -

Page 16: Применение муравьиных алгоритмов

Реализован муравьиный алгоритм для задачи поиска в графе максимально независимого множества

Экспериментально найдены оптимальные параметры алгоритма

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

Page 17: Применение муравьиных алгоритмов

Реализация в Microsoft Visual Studio • 5 классов

• Около 1500 строк кода на языке С#

Оптимизация алгоритма • Возможность распараллеливания