AI-For-Beginners/translations/ru/lessons/6-Other/21-GeneticAlgorithms
localizeflow[bot] 7a7aeb92a1 chore(i18n): sync translations with latest source changes (chunk 1/1, 203 changes) 2026-01-30 01:10:04 +00:00
..
Diophantine.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 12:35:46 +00:00
Genetic.ipynb 🌐 Update translations via Co-op Translator 2025-08-28 12:35:46 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 203 changes) 2026-01-30 01:10:04 +00:00

README.md

Генетические алгоритмы

Тест перед лекцией

Генетические алгоритмы (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 как отправную точку.