AI-For-Beginners/translations/uk/lessons/6-Other/21-GeneticAlgorithms/README.md

6.6 KiB
Raw Blame History

Генетичні алгоритми

Тест перед лекцією

Генетичні алгоритми (GA) базуються на еволюційному підході до штучного інтелекту, де методи еволюції популяції використовуються для отримання оптимального рішення для заданої задачі. Вони були запропоновані у 1975 році Джоном Генрі Голландом.

Генетичні алгоритми базуються на таких ідеях:

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

Якщо ви хочете реалізувати генетичний алгоритм, вам потрібно:

  • Знайти метод кодування рішень задачі за допомогою генів g∈Γ
  • На множині генів Γ визначити функцію пристосованості fit: Γ→R. Менші значення функції відповідають кращим рішенням.
  • Визначити механізм схрещування, щоб комбінувати два гени та отримати нове валідне рішення crossover: Γ2→Γ.
  • Визначити механізм мутації mutate: Γ→Γ.

У багатьох випадках схрещування та мутація є досить простими алгоритмами для маніпуляції генами як числовими послідовностями або бітовими векторами.

Конкретна реалізація генетичного алгоритму може варіюватися залежно від задачі, але загальна структура виглядає так:

  1. Вибрати початкову популяцію G⊂Γ
  2. Випадково вибрати одну з операцій, яка буде виконана на цьому кроці: схрещування або мутація
  3. Схрещування:
  • Випадково вибрати два гени g1, g2 ∈ G
  • Обчислити схрещування g=crossover(g1,g2)
  • Якщо fit(g)<fit(g1) або fit(g)<fit(g2) - замінити відповідний ген у популяції на g.
  1. Мутація - вибрати випадковий ген g∈G і замінити його на mutate(g)
  2. Повторювати з кроку 2, поки не буде досягнуто достатньо малого значення fit або поки не буде досягнуто ліміту на кількість кроків.

Типові задачі

Задачі, які зазвичай вирішуються за допомогою генетичних алгоритмів:

  1. Оптимізація розкладу
  2. Оптимальне пакування
  3. Оптимальне різання
  4. Прискорення повного перебору

✍️ Вправи: Генетичні алгоритми

Продовжуйте навчання у наступних ноутбуках:

Перейдіть до цього ноутбука, щоб побачити два приклади використання генетичних алгоритмів:

  1. Справедливий розподіл скарбів
  2. Задача про 8 ферзів

Висновок

Генетичні алгоритми використовуються для вирішення багатьох задач, включаючи логістичні та пошукові задачі. Ця галузь натхненна дослідженнями, які об'єднали теми з психології та комп'ютерних наук.

🚀 Виклик

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

Тест після лекції

Огляд і самостійне навчання

Перегляньте це чудове відео, яке розповідає про те, як комп'ютер може навчитися грати в Super Mario, використовуючи нейронні мережі, треновані генетичними алгоритмами. Ми дізнаємося більше про те, як комп'ютер навчається грати в такі ігри у наступному розділі.

Завдання: Діофантове рівняння

Ваше завдання - вирішити так зване Діофантове рівняння - рівняння з цілими коренями. Наприклад, розглянемо рівняння a+2b+3c+4d=30. Вам потрібно знайти цілі корені, які задовольняють це рівняння.

Це завдання натхнене цією статтею.

Підказки:

  1. Ви можете розглядати корені в інтервалі [0;30]
  2. Як ген, розгляньте список значень коренів

Використовуйте Diophantine.ipynb як відправну точку.