Skip to content
/ Snake Public

The "Snake" game. Training neural network by the genetic algorithm.

Notifications You must be signed in to change notification settings

tgladkiy/Snake

Repository files navigation

Snake

Программа – тренажёр для обучения AI играть в игру-змейку. Генетический алгоритм
Видео: https://youtu.be/Js6FjtkmcQc

Файлы и модули:
snake_main - основной файл тренажера
snake_matrix - поле и змейка, формирует матрицу игрового поля, генерирует яблоки, хранит информацию о состоянии и текущем положении змейки, рассчитывает данные сенсоров
rnd_snakes - генерация нулевых популяций и отбор лучших змей в семьях
snake_ai – нейросеть, предсказание следующего хода
snake_draw - наполнение окна игры, отрисовки графики и таблиц
plot_to_img - скрипт открывается в отдельном процессе, берет данные из сохраненного файла статистики, генерирует график результатов семейств по эпохам, сохраняет график в файл.

snake_plot_clean.png - картинка с пустым графиком
snake_plot.png - график результатов, генерируется после каждой эпохи
snake_best_weights_ХХХХХХ_ХХХХ.bin - файл с весами и результатами, генерируется каждый запуск программы
snake_statistics_ХХХХХХ_ХХХХ.csv - файл со статистикой, генерируется каждый запуск программы

Стандартные и популярные библиотеки:
os, time, datetime, pickle, shutil – размещения окна, время, дата и работа с файлами (сохранение весов, статистики, графиков, копирование)
pygame – окно игры, анимация, вывод таблиц результатов
pandas, matplotlib – работа с данными, построение графиков обучения
multiprocessing – создание нескольких потоков для расчета случайных весов на несколько семей одновременно
subprocess – создает процесс, открывая скрипт построения графика, сохраняет график в файл

Алгоритм работы:
Каждая змейка - перцептрон с 2 скрытыми слоями, слоем сенсоров на входе и слоем направления следующего шага.

Этапы обучения:

  • формируется несколько семейств из большого количества змей с рандомными весами (10.000-100.000)
  • отбор змей с лучшими результатами из рандомных
  • многократное скрещивание змей в каждом семействе + мутация 1-5% и отбор лучших по количеству очков и ходов
  • скрещивание лучших змей из семей после 100 эпох - формирование супер-семьи
  • бесконечный цикл: игры-отбор лучших-скрещивание

About

The "Snake" game. Training neural network by the genetic algorithm.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages