|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Генетичні алгоритми
Тест перед лекцією
Генетичні алгоритми (GA) базуються на еволюційному підході до штучного інтелекту, де методи еволюції популяції використовуються для отримання оптимального рішення для заданої задачі. Вони були запропоновані у 1975 році Джоном Генрі Голландом.
Генетичні алгоритми базуються на таких ідеях:
- Валідні рішення задачі можуть бути представлені як гени
- Схрещування дозволяє комбінувати два рішення, щоб отримати нове валідне рішення
- Відбір використовується для вибору більш оптимальних рішень за допомогою функції пристосованості
- Мутації вводяться для дестабілізації оптимізації та виходу з локального мінімуму
Якщо ви хочете реалізувати генетичний алгоритм, вам потрібно:
- Знайти метод кодування рішень задачі за допомогою генів g∈Γ
- На множині генів Γ визначити функцію пристосованості fit: Γ→R. Менші значення функції відповідають кращим рішенням.
- Визначити механізм схрещування, щоб комбінувати два гени та отримати нове валідне рішення crossover: Γ2→Γ.
- Визначити механізм мутації mutate: Γ→Γ.
У багатьох випадках схрещування та мутація є досить простими алгоритмами для маніпуляції генами як числовими послідовностями або бітовими векторами.
Конкретна реалізація генетичного алгоритму може варіюватися залежно від задачі, але загальна структура виглядає так:
- Вибрати початкову популяцію G⊂Γ
- Випадково вибрати одну з операцій, яка буде виконана на цьому кроці: схрещування або мутація
- Схрещування:
- Випадково вибрати два гени g1, g2 ∈ G
- Обчислити схрещування g=crossover(g1,g2)
- Якщо fit(g)<fit(g1) або fit(g)<fit(g2) - замінити відповідний ген у популяції на g.
- Мутація - вибрати випадковий ген g∈G і замінити його на mutate(g)
- Повторювати з кроку 2, поки не буде досягнуто достатньо малого значення fit або поки не буде досягнуто ліміту на кількість кроків.
Типові задачі
Задачі, які зазвичай вирішуються за допомогою генетичних алгоритмів:
- Оптимізація розкладу
- Оптимальне пакування
- Оптимальне різання
- Прискорення повного перебору
✍️ Вправи: Генетичні алгоритми
Продовжуйте навчання у наступних ноутбуках:
Перейдіть до цього ноутбука, щоб побачити два приклади використання генетичних алгоритмів:
- Справедливий розподіл скарбів
- Задача про 8 ферзів
Висновок
Генетичні алгоритми використовуються для вирішення багатьох задач, включаючи логістичні та пошукові задачі. Ця галузь натхненна дослідженнями, які об'єднали теми з психології та комп'ютерних наук.
🚀 Виклик
"Генетичні алгоритми легко реалізувати, але їх поведінку важко зрозуміти." джерело Проведіть дослідження, щоб знайти реалізацію генетичного алгоритму, наприклад, для вирішення головоломки Судоку, і поясніть, як він працює у вигляді ескізу або блок-схеми.
Тест після лекції
Огляд і самостійне навчання
Перегляньте це чудове відео, яке розповідає про те, як комп'ютер може навчитися грати в Super Mario, використовуючи нейронні мережі, треновані генетичними алгоритмами. Ми дізнаємося більше про те, як комп'ютер навчається грати в такі ігри у наступному розділі.
Завдання: Діофантове рівняння
Ваше завдання - вирішити так зване Діофантове рівняння - рівняння з цілими коренями. Наприклад, розглянемо рівняння a+2b+3c+4d=30. Вам потрібно знайти цілі корені, які задовольняють це рівняння.
Це завдання натхнене цією статтею.
Підказки:
- Ви можете розглядати корені в інтервалі [0;30]
- Як ген, розгляньте список значень коренів
Використовуйте Diophantine.ipynb як відправну точку.