Я студент, що працює над симулятором колонії мурашок для курсового проекту. Алгоритм його (очевидно) алгоритм колонії мурашок. Я знаю, що існують різні форми алгоритму, але всі вони були занадто математично деталізовані для нас, тому ми застосували такий підхід:
- Мураха народжується в колонії і повинен збирати їжу з джерела, щоб підтримувати колонію.
- Всі мурашки схожі.
- Площа, по якій рухається мураш, - це сітка 1000х1000, тому кожна точка сітки служить дійсною точкою для займання мурашки. Тепер усі алгоритми, на які я зіткнувся, включають обробку вершин і країв окремо, але оскільки ми обмежуємо рух мурах лише чотирма напрямками (вгору, вниз, вліво, вправо), я думаю, це не має значення, куди ми поставимо феромон.
- Згадані вище точки сітки зберігають феромон.
- Мурашка скидає феромон тільки в тому випадку, якщо він переносить їжу.
- Для мурашки в положенні (i, j) він вирішує, куди рухатися на наступному етапі, враховуючи кількість феромонів на чотирьох суміжних вузлах у простому імовірнісному формулі, тобто ймовірність подорожі до вузла задається (кількість феромону в конкретному сусідньому вузлі) / (сума феромону в 4 сусідніх вузлах).
- Мурашка не може повернутися до місця, з якого вона щойно прийшла. Це можна зробити лише в тому випадку, якщо він знаходиться на ділянці, де є їжа, або він знаходиться в колонії.
Тепер я хвилююсь (і що насправді відбувається в нашій програмі), що коли мураха ПЕРШИЙ досягає позиції, в якій є їжа, і підбирає її, то, до речі, працює наш алгоритм, він може рухатися куди завгодно! Це тому, що вона залишить лише феромоновий слід, як тільки він буде їжу, а не раніше, і оскільки це перший мурашник, вже немає сліду.
Якщо мураха може переміститися куди завгодно, мурахи, які дістаються до джерела їжі після нього, також здебільшого прагнуть слідувати за ним. НАДІЛЬКО, якщо він не рухається назад до колонії. Це розбиває призначення всього алгоритму.
Тож мої запитання є
- Чи є вищезазначена турбота дійсною? Якщо ні, то чому? Якщо так, то як з цим боротися?
- Чи потрібно внести деякі зміни в наше основне розуміння алгоритму, щоб насправді змусити його працювати?
- Які ще є найтонші, але важливі речі, які у такому випадку можуть пропустити новачки, як я?