Алгоритм колонії мурашок


13

Я студент, що працює над симулятором колонії мурашок для курсового проекту. Алгоритм його (очевидно) алгоритм колонії мурашок. Я знаю, що існують різні форми алгоритму, але всі вони були занадто математично деталізовані для нас, тому ми застосували такий підхід:

  • Мураха народжується в колонії і повинен збирати їжу з джерела, щоб підтримувати колонію.
  • Всі мурашки схожі.
  • Площа, по якій рухається мураш, - це сітка 1000х1000, тому кожна точка сітки служить дійсною точкою для займання мурашки. Тепер усі алгоритми, на які я зіткнувся, включають обробку вершин і країв окремо, але оскільки ми обмежуємо рух мурах лише чотирма напрямками (вгору, вниз, вліво, вправо), я думаю, це не має значення, куди ми поставимо феромон.
  • Згадані вище точки сітки зберігають феромон.
  • Мурашка скидає феромон тільки в тому випадку, якщо він переносить їжу.
  • Для мурашки в положенні (i, j) він вирішує, куди рухатися на наступному етапі, враховуючи кількість феромонів на чотирьох суміжних вузлах у простому імовірнісному формулі, тобто ймовірність подорожі до вузла задається (кількість феромону в конкретному сусідньому вузлі) / (сума феромону в 4 сусідніх вузлах).
  • Мурашка не може повернутися до місця, з якого вона щойно прийшла. Це можна зробити лише в тому випадку, якщо він знаходиться на ділянці, де є їжа, або він знаходиться в колонії.

Тепер я хвилююсь (і що насправді відбувається в нашій програмі), що коли мураха ПЕРШИЙ досягає позиції, в якій є їжа, і підбирає її, то, до речі, працює наш алгоритм, він може рухатися куди завгодно! Це тому, що вона залишить лише феромоновий слід, як тільки він буде їжу, а не раніше, і оскільки це перший мурашник, вже немає сліду.

Якщо мураха може переміститися куди завгодно, мурахи, які дістаються до джерела їжі після нього, також здебільшого прагнуть слідувати за ним. НАДІЛЬКО, якщо він не рухається назад до колонії. Це розбиває призначення всього алгоритму.

Тож мої запитання є

  • Чи є вищезазначена турбота дійсною? Якщо ні, то чому? Якщо так, то як з цим боротися?
  • Чи потрібно внести деякі зміни в наше основне розуміння алгоритму, щоб насправді змусити його працювати?
  • Які ще є найтонші, але важливі речі, які у такому випадку можуть пропустити новачки, як я?

1
Якби я будував колонію мурашок, я мав би два типи феромонових знаків: "звичайний", завжди залишений там, де їде мураш, і "їжа", залишена лише мурахом, що несе їжу. Мураха рухається до більшої концентрації "звичайного" феромону, якщо він переносить їжу, інакше до знаків "їжі". Також я зробив мурашок "голодним" і "насиченим"; голодний мураш рухається до знаків "їжі", але далеко від "звичайних" знаків, щоб шукати нові джерела їжі. (Я б також зробив сітку шестикутною, але справа не в цьому.)
9000

Хоча існує багато варіацій, я думаю, що більшість алгоритмів колонії мурашок припускають, що мураха може запам'ятати свій шлях додому. IOW, він знає вузли, які він уже відвідував. Феромон вступає в гру для мурашок, що випадково подорожують.
Данк

Коли-небудь грати simant ?

"Я знаю, що існують різні форми алгоритму, але всі вони були занадто математично деталізовані для нас, тому ми взяли підхід, у якому ми маємо ..." Ви впевнені, що насправді виконуєте завдання, яке вам дали, якщо не могли " не розумієте алгоритми?
Doval

@ Doval: Ми просто повинні зробити проект на наш вибір. Ми ні в якому разі не обмежувалися полем. Курс є вступним в C ++. Наші викладачі просто хочуть, щоб ми мали досвід роботи у розробці програмного забезпечення.
транзистор

Відповіді:


6

Це не так, як працює ACO. ACO скидає лише феромони після того, як мурахи переміщаються по всіх точках сітки. Потім ви щось оцінюєте (можливо, загальний час у дорозі), а потім скидаєте феромони для хороших мурах і повторюєте.

Вони, як правило, не переміщуються до однієї вершини двічі, хоча ви можете налаштувати це для специфіки реалізації.

Феромони не скидаються з кожним ходом, вони падають після того, як вони рухаються скрізь, і щось оцінюється, щоб визначити, які мурахи краще. Мурахи, які краще, ніж скидають феремони (можливо, найкращі 25% мурашок).


Я не погоджуюся - ACO може працювати, скидаючи феремон на кожному кроці, особливо коли мета - імітувати колонію мурашок (алгоритми ACO для вирішення інших проблем, ніж "це те, що робить колонія мурашок", вживає заходів, щоб зробити алгоритм більш ефективним, але не обов’язково, як справжні мурахи).
Логан Пікап

1

Реалізації, які я бачив від інших, і ті, які я написав для себе, завжди змушували мурашок випускати феромони по шляху, який проїхав, щоб дістатися до їжі, як тільки вони досягли їжі. Тобто мурахи марширують зі своєї колонії до їжі після випадкової прогулянки; шляхи, якими слідують мурахи від колонії до їжі , позначаються феромонами лише після того, як мурахи досягли успіху в їжі. Повернення подорожі явно не моделюється. Як правило, кілька мурашок проходять свій шлях до того, як будь-які феромони будуть відкладені для поточної ітерації. Потім феромони розгортаються для успішних шляхів, і починається новий раунд.

Зазвичай шанси мурахи вступити в даний вузол зважуються на кількість феромону, кратне якогось показника "доброти". Наприклад, мірою доброти може бути щось на зразок обертання відстані між мурашкою та їжею - це дозволить мурахам намагатися рухатися до їжі, незалежно від попередніх відкладень феромонів. Користь може бути додатково зважена для врахування інших факторів, наприклад, через деякі вузли може бути легше подорожувати, ніж інші. І як вказує Ендерленд, зазвичай існує певна форма «відбору» шляху, коли всі мурахи успішно проходять курси, де для депозиту феромонів вибирається лише деяка частина «найкращих» шляхів. Однак ви все-таки повинні отримати розумні шляхи навіть без вибору,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.