С Новым годом! Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 16

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

27.06.2018, 20:35. Показов 4084. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Хотел уточнить у знающих несколько моментов в данном алгоритме. Везде, где я смотрел, данный алгоритм используется для решения задачи коммивояжера. Я же хотел просто найти кратчайший путь. Что я сделал:
1) Задал матрицу смежности
2) Расставил на ребрах некоторое начальное значение феромонов
3) Расположил всех муравьев в начальное точке
4) Муравьи по очереди начинают искать путь до конечного пункта
5) Чтобы сделать выбор, куда идти, вычисляется вероятность перехода по формуле p = (t * 1 / l) / sum, t - феромоны, l - длина данного ребра, sum - cумма (t * 1/l) для всех смежных ребер
6) Выбор делается "случайно". То есть производится генерация случайного числа. Если вероятность перехода по ребру равна 64%(умножил на 100), то, если генерированное число меньше 64, то идем по нему и так далее
7) По пути оставляют за собой феромоны(по формуле t(new) = (1-p)*t(old) + delta, где t - феромон на ребре, а delta = 1/D(D-длина путь текущего муравья, который прошел по данному ребру)
8) Это повторяется для всех муравьев, затем обновляются все феромоны и вероятности перехода

Теперь вопросы. Правильный ли алгоритм? Я тестировал его на простом графе. Он выдавал не оптимальное решение. Вне зависимости от параметров, которые я задавал.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.06.2018, 20:35
Ответы с готовыми решениями:

Муравьиный алгоритм
Привет. Реализовываю данный алгоритм. Написал пока часть для одного муравья (обернуть циклом, считающим муравьев, позже не проблема):...

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

Муравьиный алгоритм С++
Здравствуйте. Проблемма следующая. Есть матрица смежности точек графа с растояниями между вершинами. Как применить муравьиный алгоритм для...

3
Модератор
Эксперт функциональных языков программирования
3133 / 2280 / 469
Регистрация: 26.03.2015
Сообщений: 8,874
28.06.2018, 02:11
Цитата Сообщение от Not a number Посмотреть сообщение
Я же хотел просто найти кратчайший путь.
Какой сложный алгоритм Вы выбрали для решения такой простой задачи.

Цитата Сообщение от Not a number Посмотреть сообщение
Правильный ли алгоритм?
Полагаю, что нет.

Цитата Сообщение от Not a number Посмотреть сообщение
t(new) = (1-p)*t(old) + delta
Почему на более привлекательных путях феромоны испаряются быстрее?
0
0 / 0 / 0
Регистрация: 04.03.2018
Сообщений: 16
28.06.2018, 03:51  [ТС]
Shamil1,
Цитата Сообщение от Shamil1 Посмотреть сообщение
Какой сложный алгоритм Вы выбрали для решения такой простой задачи
Это нужно для исследования. Я знаю достаточно алгоритмов для решения подобной простой задачи. Если бы моя цель состояла в том, чтобы просто решить такую задачу, то я бы без сомнения воспользовался ими.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Полагаю, что нет.
Эм, я, конечно, рад, что Вы ответили, но разрешите более развернуто. Алгоритм не я выдумал, читал разные источники. Может быть что-то и упустил.
Цитата Сообщение от Shamil1 Посмотреть сообщение
Почему на более привлекательных путях феромоны испаряются быстрее?
"Испаряются быстрее"? Что Вы имеете в виду? Эта формула действует для тех ребер, по которым прошел муравей, те ребра, которые муравей обделил своим вниманием, только теряют активность феромона.
0
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
30.06.2018, 23:57
Лучший ответ Сообщение было отмечено Not a number как решение

Решение

Прежде всего при старте системы не ставить начальные рандомные феромоны, везде одинаковые, так как муравьи еще ничего не сделали и ходы должны быть равновероятными.
И нужно выработать признак оптимального решения. Например, что самый оптимальный путь (самый вонючий) не менялся последние 100 итераций.
И еще, муравьиный алгоритм не обязан давать идеальный ответ, он позволяет найти некоторый "достаточно хороший" за небольшое время.


Цитата Сообщение от Shamil1 Посмотреть сообщение
Почему на более привлекательных путях феромоны испаряются быстрее?
это правильная формула из официального описания алгоритма,
У нас не будет слишком сильного накопления феромонов, и будет проще слезть с решений потерявших актуальность.
Если путь будет все еще актуален, то муравьи будут продолжать его обновлять и особых проблем сильное испарение не доставит.

Добавлено через 7 минут
Я надеюсь ты муравьям запретил повторное посещение узлов?

По возможности попробуй сделать визуализацию чтобы тебе показывалась карта распределения феромонов поверх рисунка графа.
Обычно в качестве демонстрации берут граф в виде 2D массива (можно с лабиринтом) и отрисовывают его в виде картинки.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.06.2018, 23:57
Помогаю со студенческими работами здесь

Муравьиный алгоритм, ACO
Добрый день! Помогите пожалуйста с муравьиным алгоритмом. Есть исходник в с++ надо перегнать его в матлаб или сделать приблизительный. ...

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

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

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void lab () { int s1 = 0; int s2 =...

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар)
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная головоломка). Определение. Перестано́вочные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru