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

Preview:

DESCRIPTION

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

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

иначе

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

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

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

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

𝑆 𝑘(𝑡)+

𝐺 𝐿𝑘 = 𝑄𝐿𝑘 = 1

|𝑉|𝐿𝑘

1. 𝑉 = 8

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

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

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

𝜶 = 𝟏 𝜷 = 𝟏

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 сек

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

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

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

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

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ч -

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

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

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

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

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

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

Recommended