Найти тему

Эксперименты с генетическими алгоритмами | Часть 1

Оглавление

Вступление

Так как в 10 классе ввелся новый предмет "Основы проектной деятельности", то мне предстояло выбрать тему и начать делать проект. Долго думать не пришлось: я уже давно хотел узнать, что же такое генетические алгоритмы и где их используют.

Немного теории

Генетический алгоритм - это эвристический алгоритм поиска, используемый для решения задач оптимизации и моделирования путём случайного подбора, комбинирования и вариации искомых параметров с использованием механизмов, аналогичных естественному отбору в природе. (Взято с сайта ru.wikipedia.org)

Блок-схема генетического алгоритма. (Взято с сайта ru.wikipedia.org)
Блок-схема генетического алгоритма. (Взято с сайта ru.wikipedia.org)

Практика

Для демонстрации генетического алгоритма я решил написать простую программу на языке C# .

Принцип программы:

  1. Создается первое поколение с низкими внутренними характеристиками(Скорость/размер/выносливость). Каждая характеристика не может быть больше 10 и меньше 2.
  2. У каждой особи вычисляются внешние характеристики по таким правилам: чем больше размер, тем меньше скорость; чем больше выносливость, тем меньше размер и больше скорость. Так же вычисляется дистанция, пройденная особью за 10 секунд(Скорость внешняя*10).
  3. Особи сортируются по дистанции и половина скрещиваются, тем самым образуя следующее поколение. С малым шансом одна из характеристик может мутировать.
  4. Переход к 2., если кол-во шагов не равняется заранее введенному.
  5. Экспорт характеристик победителей каждого шага в таблицу Excel.

Реализация:

Итоги

Данное приложение отлично демонстрирует принцип действия генетического алгоритма. Всего за 50 шагов программа пришла к результату, что максимальная дистанция достигается при скорости = 10, размеру = 2 и выносливости = 10.

Если вас заинтересовала данная программа и вы хотите подробнее узнать, как она действует или вы хотите о чем-либо спросить, то пишите в комментарии.

Подписывайтесь на мой канал, если вы хотите следить за моими дальнейшими экспериментами.

#Информатика #генетические алгоритмы #программирование #наука #эксперимент