Перейти до вмісту
coden

Оптимізація мурашиною колонією: як феромоновий слід знаходить короткий шлях

Стигмергія, дослід із подвійним мостом, мурашина система Доріго, роль параметрів α, β і ρ та вдосконалені варіанти — на маршруті через обласні центри Чехії і на 60 містах, у порівнянні з відпалом.

13 хвилин Matěj Žalmánek 2026-10-15

Серія Основи ШІ Частина 29 з 52
  1. Мапа штучного інтелекту: що є що і як усе це пов’язано
  2. Коротка історія штучного інтелекту: від Тюрінга до мовних моделей
  3. Дані, модель, тренування, інференс: основні поняття на одному прикладі
  4. Як читати математичний запис: символи, індекси, суми та квантори
  5. Множини й відношення: конструктор, з якого складаються означення в ШІ
  6. Функції й відображення: чому кожна модель у ШІ — це функція
  7. Логіка й доведення: правила, за якими міркують у ШІ
  8. Графи й дерева: структура, на якій тримаються пошук і нейронні мережі
  9. Лінійна алгебра для машинного навчання: вектори, матриці й чому ШІ передусім множить
  10. Похідні, градієнт і правило ланцюжка: як модель дізнається, у якому напрямку вчитися
  11. Градієнтний спуск: як навчається модель
  12. Що таке ймовірність: від кидка кубика до аксіом Колмогорова
  13. Умовна ймовірність і теорема Баєса: як змінити оцінку, коли дізнаєтеся щось нове
  14. Випадкова величина і функція розподілу: одна функція, яка каже про розподіл усе
  15. Функція щільності та функція маси ймовірності: чому неперервна величина має в точці ймовірність нуль
  16. Математичне сподівання, дисперсія і коваріація: де лежить розподіл, наскільки він широкий і що з чим пов’язано
  17. Огляд розподілів ймовірностей: Бернуллі, біноміальний, Пуассона, рівномірний, нормальний і експоненційний
  18. Закон великих чисел і центральна гранична теорема: чому середні поводяться так передбачувано
  19. Статистика й оцінювання параметрів: максимальна правдоподібність, MAP і довірчі інтервали
  20. Теорія інформації: ентропія, перехресна ентропія і KL-дивергенція — звідки беруться функції втрат
  21. Пошук у просторі станів: BFS, DFS, UCS і A* з анімаціями
  22. Ігри та суперник: мінімакс, альфа-бета відсікання і Monte Carlo tree search
  23. Задоволення обмежень: бектрекінг, поширення обмежень і AC-3 на судоку та мапі чеських країв
  24. Логіка й системи, засновані на знаннях: пряме і зворотне виведення, резолюція та експертні системи
  25. Планування: STRIPS, світ кубиків, евристики з релаксації та планування в AI-агентах
  26. Локальний пошук та імітація відпалу: комівояжер через обласні центри Чехії
  27. Генетичні алгоритми: популяція, схрещування, мутація і добір на рюкзаку для походу
  28. Еволюційні стратегії і генетичне програмування: від правила однієї п’ятої до закону Кеплера
  29. Оптимізація мурашиною колонією: як феромоновий слід знаходить короткий шлях
  30. Оптимізація роєм частинок: інерція, власний досвід і досвід рою
  31. Нейроеволюція: еволюція ваг і форми нейронних мереж та алгоритм NEAT
  32. Нечіткі множини й функції належності: як записати «трохи тепло»
  33. Нечітка логіка та ймовірність: чому «трохи тепло» не означає «імовірно тепло»
  34. Нечітка логіка: t-норми, імплікації та правила ЯКЩО–ТО
  35. Нечітке керування: Мамдані та Суґено від вентилятора до маятника на візку
  36. Нечітка кластеризація: алгоритм fuzzy c-means і точки між кластерами
  37. Нейро-нечіткі системи (ANFIS): нечіткі правила, які навчаються з даних
  38. Марковські ланцюги: матриця переходів, стаціонарний розподіл і PageRank
  39. Приховані марковські моделі: алгоритм Вітербі й нечесне казино
  40. Байєсівські мережі: чому трава мокра і що з цього випливає для дощувача
  41. Фільтр Калмана: як за неточними вимірюваннями оцінити, де авто і як швидко воно їде
  42. Види машинного навчання: з учителем, без учителя, з частковим залученням учителя та інші
  43. Промпти, контекст і RAG: як дати моделі правильну інформацію
  44. Варіаційні автокодувальники (VAE): нові зображення з неперервного латентного простору
  45. Генеративні змагальні мережі (GAN): фальшувальник проти детектива
  46. Дифузійні моделі: як із чистого шуму постає зображення
  47. Марковські процеси ухвалення рішень: стани, дії, винагороди й рівняння Беллмана
  48. Q-навчання і DQN: як навчитися цінності дій — від таблиці до нейронної мережі
  49. Policy gradient і PPO: навчання безпосередньо політики
  50. Як працює ШІ-агент: мовна модель у циклі з інструментами
  51. Програмування з AI-агентами: завдання, тести й перевірка
  52. Оцінювання і безпека систем ШІ: як вимірювати і як стежити

Повна програма серії Готово: 52 з 83 тем

Що ви винесете
  • Як колонія знаходить коротший шлях, хоча жодна мурашка його не знає.
  • Як мурашина система будує маршрути з феромону й відстаней і чому феромон мусить вивітрюватися.
  • Де мурашині алгоритми зазнають невдачі і як їх рятують удосконалені варіанти та локальний пошук.

Що варто знати заздалегідь: Локальний пошук та імітація відпалу: комівояжер через обласні центри Чехії

Окрема мурашка не має мапи, не вміє рахувати й бачить ледве на кілька сантиметрів уперед. Колонія проте надійно знаходить найкоротший шлях від мурашника до їжі. Жодна мурашка його не знає — він виникає з того, як усі разом позначають місцевість. На початку дев’яностих Марко Доріго з Міланської політехніки помітив, що той самий трюк можна застосувати до задачі комівояжера. Так виникла оптимізація мурашиною колонією, а з нею й ціла галузь ройового інтелекту.

Стаття продовжує частину Локальний пошук та імітація відпалу. Розв’язуємо ту саму задачу — маршрут через обласні центри з оптимумом 1 060,4 км —, тож побачимо, як мурахи впораються проти відпалу.

1. Спілкування через слід

Означення — стигмергія

Стигмергія — це непряме спілкування через середовище: особина змінює середовище, і ця зміна впливає на те, що згодом зроблять інші (або вона сама). Поняття запровадив П’єр-Поль Грассе 1959 року, вивчаючи будівництво термітників.

Простими словами

Мурахи нічого одна одній не кажуть, вони залишають повідомлення на землі. Куди йдуть, там відкладають феромон — запаховий слід, який з часом вивітрюється. Мурашка на роздоріжжі з більшою ймовірністю йде туди, де слід пахне сильніше. Як протоптана стежка в траві: що більше людей нею ходить, то помітніша вона стає і то більше інших нею піде.

2. Дослід із подвійним мостом

1989 року Ґосс, Денебур і їхні колеги збудували аргентинським мурахам між мурашником і їжею два мости — один удвічі довший за інший. Згодом більшість колонії ходила коротшим. Чому? Мурашка, яка обрала коротку гілку, дістається їжі раніше, а коли повертається, коротка гілка біля їжі вже позначена. Короткий шлях позначається швидше й починає вигравати.

Означення — модель вибору гілки (Денебур та ін.)

Якщо на початку на короткій і довгій гілці є кількості феромону A і B, мурашка обирає коротку гілку з імовірністю

P = (k + A)h / ((k + A)h + (k + B)h),

де k визначає, як сильно мурашка реагує на слабкий слід, а h > 1 підсилює різниці. Мурашка відкладає феромон на початку обраної гілки і на її кінці, коли туди дістанеться.

Простими словами

Поки феромону мало (менше за k), мурахи обирають майже навмання. Що більше його стає, то більше він вирішує. Показник h = 2 робить так, що вдвічі більше феромону означає вчетверо більшу привабливість — мала перевага швидко роздувається до явної переваги.

P = (k + A)h / ((k + A)h + (k + B)h)

P
імовірність, що наступна мурашка піде короткою гілкою — мурашка вирішує не напевно, лише з вагою; довга гілка дістає решту 1 − P
A
феромон на короткій гілці — єдине, що мурашка «знає» про шлях; що більше його там, то сильніше тягне коротка гілка
B
феромон на довгій гілці — у знаменнику він змагається з короткою, тож вирішує відношення слідів, а не їхня абсолютна кількість
k
«поріг уваги» — додається до обох гілок однаково, тож кілька перших молекул феромону майже не змінюють відношення; без нього за всю колонію вирішила б перша мурашка
h
підсилювач — степінь, більший за 1, перебільшує різницю; саме він робить із малої випадкової переваги додатний зворотний зв’язок
Дріб «моя вага, поділена на суму всіх ваг» гарантує, що ймовірності обох гілок разом дають 1.
Приклад — як вирішують k = 30 і h = 2

На короткій гілці A = 20, на довгій B = 10 одиниць феромону:

P = (30 + 20)2 / ((30 + 20)2 + (30 + 10)2) = 2 500 / (2 500 + 1 600) = 2 500 / 4 100 ≈ 0,610.

  • Однакові сліди (A = B, скажімо обидва нульові): P = 0,500 — чиста випадковість.
  • П’ять одиниць проти нуля: P = 352 / (352 + 302) ≈ 0,576 — малий слід майже нічого не вирішує, це робота k.
  • A = 60, B = 10: P = 8 100 / (8 100 + 1 600) ≈ 0,835 — уже явна перевага.
  • Без підсилення (h = 1) при A = 20, B = 10 вийшло б лише 50 / 90 ≈ 0,556 замість 0,610.

Симуляція моделі (k = 30, h = 2, десять мурах за крок, коротка гілка 5 кроків, довга 10) показує частку феромону на короткій гілці у восьми колоніях:

00,51 0150300450600 коротка довга час (кроки симуляції) частка на короткій гілці (0–1)
Подвійний міст: частка феромону на короткій гілці у восьми колоніях

Сім колоній усталилися на короткій гілці, одна — на довгій: кілька перших мурах випадково обрали довгу гілку, і додатний зворотний зв’язок її «замкнув». Зі ста колоній 85 закінчили на короткій гілці і 9 на довгій. Коли обидві гілки однаково довгі, колонії діляться приблизно навпіл (46 і 42) — симетрію порушує випадок. Довжина шляху, отже, зсуває результат, але не гарантує його. Ту саму слабкість побачимо в алгоритмі.

3. Мурашина система

Мурашина система Доріго (Ant System, 1992) посилає віртуальних мурах графом міст. Кожна будує цілий маршрут і, залежно від того, наскільки він короткий, відкладає феромон на його ребрах.

Означення — маршрут і його довжина

Задано n міст і відстані dij = dji > 0. Маршрут — це порядок міст π = (π1, …, πn), у якому кожне місто трапляється рівно один раз; його довжина —

L(π) = dπ1π2 + dπ2π3 + … + dπnπ1

— останній доданок повертає мандрівника додому. Ребро (i, j) належить маршруту, якщо i і j йдуть у ньому безпосередньо одне за одним. Задача комівояжера шукає маршрут найменшої довжини.

Означення — правило переходу

Мурашка в місті i іде до ще не відвіданого міста j з імовірністю

pij = τijα · ηijβ / ∑l τilα · ηilβ,

де τij — феромон на ребрі, ηij = 1 / dij — видимість (близькі міста привабливіші), а сума береться за всіма невідвіданими містами l. Параметри α і β зважують слід проти відстані.

Простими словами

Мурашка вирішує за двома речами: скільки товаришок ходило цим шляхом (феромон) і як це далеко (видимість). Вона ніколи не обирає напевно — лише надає перевагу деяким можливостям. Завдяки цьому кожна мурашка будує трохи інший маршрут.

pij = τijα · ηijβ / ∑l ∈ Ni τilα · ηilβ

pij
імовірність кроку з i до j — ми тягнемо жереб, а не обираємо найкраще, щоб колонія весь час пробувала й інші маршрути
τijα
пам’ять колонії — феромон несе досвід попередніх мурах; показник α каже, наскільки йому довіряти (α = 0 вимикає його повністю)
ηijβ
жадібність — η = 1 / d надає перевагу близьким містам; це порада, яку маємо задарма вже з першої ітерації, коли феромон ще нічого не знає
∑ … за Ni
сума ваг усіх ще не відвіданих міст — діленням ваги перетворюються на ймовірності із сумою 1; відвіданих міст у ній немає, тож мурашка до них не повертається
Добуток означає, що ребро мусить бути добрим з обох поглядів: ребро без феромону або ребро до далекого міста має малий шанс, навіть якщо вирізняється в іншому.
Приклад — одне рішення мурашки

Мурашка стоїть у місті i, і їй лишилося три міста: на відстані 50, 100 і 150 км, із феромоном τ = 1, 3 і 2. Стала у видимості в дробі скорочується, тож рахуймо з η = 100 / d, тобто 2, 1 і 2/3. При α = 1 і β = 3:

  • ваги: 1 · 23 = 8,000, 3 · 13 = 3,000, 2 · (2/3)3 ≈ 0,593;
  • їхня сума 11,593;
  • імовірності 0,690, 0,259 і 0,051.

Виграє найближче місто, хоча має найменше феромону. При β = 1 вийшло б 0,316, 0,474 і 0,211 — веде феромон. А при β = 0 вирішує лише слід: 0,167, 0,500 і 0,333 (частки 1 : 3 : 2).

Означення — оновлення феромону

Після кожної ітерації феромон усюди вивітрюється, і кожна мурашка m додає на ребра свого маршруту довжини Lm кількість, пропорційну 1 / Lm:

τij ← (1 − ρ) · τij + ∑m : (i, j) ∈ маршрут m Q / Lm,

де ρ ∈ (0, 1) — швидкість вивітрювання.

Простими словами

Короткі маршрути залишають сильніший слід, тож ребра, які в них часто повторюються, поступово посилюються. Вивітрювання — це забування: слід, який ніхто не оновлює, зникає. Без нього колонія назавжди трималася б того, що відкрила в перших ітераціях.

τij ← (1 − ρ) · τij + ∑m : (i, j) ∈ маршрут m Q / Lm

τij ліворуч
новий феромон на ребрі — те, за чим вирішуватимуть мурахи наступної ітерації
(1 − ρ)
вивітрювання — кожна ітерація забирає з кожного сліду ту саму частку ρ; старий досвід так слабне геометрично, і колонія може перевчитися
τij праворуч
дотеперішній феромон — пам’ять лише виправляється, а не починається з нуля
∑m
сума за мурахами, які пройшли ребром — кожна мурашка додає лише на ребра свого маршруту; ребро, яким пройде більше мурах, дістане більше — тут підраховується «голосування» колонії
Q / Lm
винагорода, обернено пропорційна довжині маршруту — коротший маршрут = сильніший слід; стала Q лише задає масштаб
Приклад — одне оновлення

Ребро має τ = 1, ρ = 0,3, Q = 1 000, і ним пройшли дві мурашки з маршрутами завдовжки 1 100 і 1 300 км:

τ ← 0,7 · 1 + 1 000 / 1 100 + 1 000 / 1 300 ≈ 0,700 + 0,909 + 0,769 = 2,378.

Ребро, яким ніхто не пройшов, має після тієї самої ітерації лише 0,7. Мурашка з коротшим маршрутом додала більше (0,909 проти 0,769).

import random

def postav_okruh(start, n, tau, d, alfa=1, beta=3):
    okruh, volna = [start], set(range(n)) - {start}
    while volna:
        i = okruh[-1]
        kandidati = list(volna)
        vahy = [tau[i][j] ** alfa * (1 / d[i][j]) ** beta for j in kandidati]
        j = random.choices(kandidati, weights=vahy)[0]
        okruh.append(j)
        volna.remove(j)
    return okruh

def aktualizuj(tau, okruhy, delka, rho=0.3, Q=1.0):
    for radek in tau:
        for j in range(len(radek)):
            radek[j] *= 1 - rho                 # вивітрювання
    for okruh in okruhy:
        L = delka(okruh)
        for a, b in zip(okruh, okruh[1:] + okruh[:1]):
            tau[a][b] += Q / L                  # коротший маршрут, сильніший слід
            tau[b][a] += Q / L

Уся мурашина система потім лише чергує побудову маршрутів і оновлення та пам’ятає найкращий маршрут, який будь-коли будь-хто збудував:

def mravenci_system(n, d, mravencu, iteraci, tau0):
    tau = [[tau0] * n for _ in range(n)]      # на початку всюди однаково
    nejlepsi = None
    for it in range(iteraci):
        okruhy = [postav_okruh(m % n, n, tau, d) for m in range(mravencu)]
        aktualizuj(tau, okruhy, delka)        # вивітрювання + новий слід
        kandidat = min(okruhy, key=delka)
        if nejlepsi is None or delka(kandidat) < delka(nejlepsi):
            nejlepsi = kandidat
    return nejlepsi

4. Мурахи на обласних центрах

Випустімо 13 мурах (з кожного міста одну) на 100 ітерацій з α = 1, β = 3 і ρ = 0,3. Мапа показує феромон на ребрах після 1-ї, 5-ї, 20-ї і 100-ї ітерації — що товща лінія, то більше феромону:

0100200300 050100150 захід → схід (км) південь → північ (км) ітерація 1 · найкращий маршрут 1 292,6 км ітерація 5 · найкращий маршрут 1 060,4 км ітерація 20 · найкращий маршрут 1 060,4 км ітерація 100 · найкращий маршрут 1 060,4 км Praha Brno Ostrava Plzeň Liberec Olomouc Ústí nad Labem Hradec Králové České Budějovice Pardubice Zlín Jihlava Karlovy Vary
Феромон на ребрах між обласними центрами

У першій ітерації слід розподілений майже всюди, і найкращий маршрут має 1 292,6 км. Уже в п’ятій ітерації одна з мурах знаходить оптимум 1 060,4 км. Феромон потім зосереджується на ребрах добрих маршрутів — слабкі лінії зникають, сильні лишаються, — а пересічна мурашка будує маршрут завдовжки приблизно 1 250 км. Колонія не збігається повністю, вона весь час трохи пробує.

Перебіг запуску за ітераціями — найкращий досі знайдений маршрут і середній маршрут тринадцяти мурах у даній ітерації:

ІтераціяНайкращий досіСереднє ітерації
11 292,6 км1 477,7 км
21 208,6 км1 424,0 км
31 208,6 км1 450,0 км
41 097,7 км1 376,7 км
51 060,4 км1 330,2 км
101 060,4 км1 267,7 км
1001 060,4 км1 247,2 км

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

Не завжди все закінчується так добре. З двадцяти запусків із різними зернами оптимум знайшли лише 7, середнє було 1 073,9 км, а найгірший результат 1 083,0 км. Відпал на тій самій задачі з результатом 98 зі 100 був надійнішим. Для порівняння: жадібний «найближчий сусід», який завжди йде до найближчого невідвіданого міста, дає залежно від старту від 1 120 до 1 336 км. Мурахи помітно кращі, але базова мурашина система сама по собі не чемпіон — тому й виникли її вдосконалені варіанти.

5. Навіщо α, β і ρ

На тринадцяти містах багато можна розв’язати й без феромону. Різницю покаже лише більша задача — ті самі 60 випадкових міст, що й у частині про відпал, 30 мурах, 150 ітерацій, середнє з трьох запусків:

НалаштуванняСередня довжинаНайкращий із трьох
α = 1, β = 3, ρ = 0,32 262,7 км2 194,0 км
α = 0 (без феромону)3 049,8 км3 037,9 км
β = 0 (без відстаней)8 648,5 км8 422,4 км
ρ = 0,02 (феромон майже не вивітрюється)2 374,5 км2 370,4 км
ρ = 0,9 (феромон вивітрюється майже одразу)2 274,1 км2 242,4 км
  • Без феромону (α = 0) мурахи — лише випадкові жадібні мандрівники й нічого не навчаються — маршрути на третину довші.
  • Без відстаней (β = 0) колонії нема від чого відштовхнутися: перші маршрути цілком випадкові, і феромон із них веде до наступних випадкових.
  • Повільне вивітрювання надто довго тримає сліди перших, поганих маршрутів, і колонія вчиться повільно. Швидке вивітрювання, навпаки, забуває й добре.

Як довго колонія пам’ятає, можна обчислити точно. Досить стежити за одним ребром.

Теорема — усталений феромон і період напіввивітрювання

Якщо ребро в кожній ітерації дістає той самий приріст Δ ≥ 0, тобто τt+1 = (1 − ρ) τt + Δ, то

τt = Δ/ρ + (1 − ρ)t (τ0 − Δ/ρ) → Δ/ρ при t → ∞.

Без приросту (Δ = 0) слід спадає до половини за t½ = ln 2 / (−ln(1 − ρ)) ітерацій.

Доведення. Віднявши Δ/ρ від обох боків рекурентного співвідношення, дістанемо τt+1 − Δ/ρ = (1 − ρ)(τt − Δ/ρ), бо (1 − ρ)Δ/ρ + Δ = Δ/ρ. Відхилення від Δ/ρ тож щоітерації множиться на число 1 − ρ ∈ (0, 1) і геометрично спадає до нуля. Період напіввивітрювання — розв’язок рівняння (1 − ρ)t = ½. ∎

τ* = Δ / ρ

τ*
рівень, на якому усталюється феромон ребра — додавання і вивітрювання врівноважені
Δ
скільки ребро дістає за ітерацію — ребра з частих і коротких маршрутів мають велике Δ, а тому й високий рівень
ρ
у знаменнику: повільне вивітрювання дає слідам вирости високо, і різниці між ребрами вирівнюються довго; швидке тримає їх низько й залежними лише від кількох останніх ітерацій
Усталений феромон — це приріст Δ, помножений на 1/ρ, — ніби ребро підсумовувало прирости приблизно за останні 1/ρ ітерацій. Така завдовжки пам’ять колонії.

Ребро з τ0 = 1 і ρ = 0,3: одне дістає в кожній ітерації Δ = 1, другим ніхто не користується.

t0123510
Δ = 11,001,702,192,532,943,27
Δ = 01,000,700,490,340,170,03

Використовуване ребро наближається до 1/0,3 ≈ 3,33, невикористовуване за десять ітерацій падає нижче трьох сотих. Період напіввивітрювання для рядків таблиці вище: при ρ = 0,3 це 1,94 ітерації, при ρ = 0,02 цілих 34,31 ітерації — сліди перших випадкових маршрутів, отже, панують ще десятки ітерацій, — а при ρ = 0,9 лише 0,30 ітерації, тож колонія пам’ятає практично лише останній раунд.

Найкраще налаштування дало від 2 194 до 2 314 км — порівнянно з відпалом із попередньої частини, який на тих самих містах закінчив між 2 210 і 2 270 км.

6. Кращі мурахи

  • Елітна стратегія додає додатковий феромон на досі найкращий маршрут, щоб він не загубився.
  • MAX–MIN Ant System (Штюцле і Гоос, 2000) дозволяє відкладати феромон лише найкращій мурашці й тримає τ між нижньою і верхньою межею. Нижня межа гарантує, що жодне ребро повністю не зникне, і колонія так передчасно не застигне — як та, що в досліді з мостом закінчила на довгій гілці.
  • Ant Colony System (Доріго і Гамбарделла, 1997) з певною ймовірністю обирає одразу найкраще ребро і забирає феромон уже під час побудови маршруту, щоб інші мурахи пробували деінде.
  • Локальний пошук. На практиці кожен маршрут, збудований мурашкою, ще доводять ходами 2-opt із частини про відпал. Мурахи знаходять добру ділянку, сходження на пагорб її доточує — у дев’яностих ця комбінація належала до найкращих методів для задачі комівояжера.
Означення — елітна стратегія і MAX–MIN Ant System

Елітна стратегія додає до звичайного оновлення ще e · Q / Lbest на кожне ребро досі найкращого маршруту довжини Lbest; e — кількість «елітних мурах».

MAX–MIN Ant System відкладає феромон лише за одним найкращим маршрутом і обрізає результат до проміжку [τmin, τmax]:

τij ← min(τmax, max(τmin, (1 − ρ) τij + Δij)), де Δij = 1 / Lbest для ребер найкращого маршруту, інакше 0.

Верхню межу Штюцле і Гоос обирають як τmax = 1 / (ρ Lbest) — рівно усталене значення Δ/ρ з теореми вище для ребра, яке щоразу лежить у найкращому маршруті. Нижня межа — мала частка верхньої; феромон до того ж на початку встановлюють на τmax, щоб перші ітерації досліджували якомога ширше.

Означення — правила Ant Colony System

Псевдовипадкове пропорційне правило: мурашка в місті i витягує q з [0, 1). Якщо q ≤ q0, вона йде одразу до міста з найбільшою вагою, j = arg maxl ∈ Ni τil · ηilβ; інакше обирає жеребом за правилом переходу мурашиної системи.

Локальне оновлення: одразу після переходу ребром (i, j) τij ← (1 − ξ) τij + ξ τ0, тож використане ребро трохи слабне в напрямку початкового значення τ0.

Глобальне оновлення після ітерації лише на ребрах найкращого маршруту: τij ← (1 − ρ) τij + ρ / Lbest.

Доріго і Гамбарделла (1997) в оригінальній статті використовують q0 = 0,9, β = 2 і ρ = ξ = 0,1 — у дев’яти кроках із десяти мурашка, отже, бере найкраще ребро і лише в десятому пробує.

7. Де працюють мурахи

  • Маршрутизація в мережах. Алгоритм AntNet (Ді Каро і Доріго, 1998) посилає мережею малі пакети-мурахи, які вимірюють затримки й оновлюють таблиці маршрутизації. Мережа так безперервно пристосовується до перевантаження.
  • Маршрути транспорту й розклади. Розвезення товарів, вивезення відходів чи порядок замовлень у виробництві — задачі, споріднені із задачею комівояжера, де мурашині алгоритми застосовують разом із локальним пошуком.
  • Ройовий інтелект. Мурашина колонія — один із прикладів того, як із простих особин і місцевих правил виникає розумна поведінка цілого. Інший, рій частинок, — тема наступної частини.

8. Підсумок

  • Мурахи спілкуються через слід у середовищі (стигмергія): коротший шлях позначається швидше, і додатний зворотний зв’язок його посилює.
  • У моделі подвійного мосту 85 зі 100 колоній усталюються на короткій гілці — але випадок може замкнути й довгу.
  • Мурашина система обирає наступне місто за феромоном τα і відстанню ηβ; феромон вивітрюється зі швидкістю ρ, а короткі маршрути додають його більше.
  • На обласних центрах вона знайшла оптимум, але лише в 7 із 20 запусків; на 60 містах впоралася порівнянно з відпалом. Без феромону і без відстаней — помітно гірше.
  • Варіанти, що використовуються на практиці (MAX–MIN, ACS), запобігають передчасному застиганню й поєднують мурах із локальним пошуком.

Хочете спробувати самі? Попросіть ШІ-агента написати симуляцію подвійного мосту і спробуйте, що станеться, коли коротку гілку посеред досліду «закриєте», — чи зуміє колонія перейти назад на довгу?

Маєте іншу думку? Напишіть на support@coden-app.com.

Агент на вашому комп’ютері, керований з телефона