ИНС для игры в аэрохоккей — различия между версиями

Материал из Department of Theoretical and Applied Mechanics
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
[[Файл:Airhockey.png|thumb|Аэрохоккей|500px]]
 
[[Файл:Airhockey.png|thumb|Аэрохоккей|500px]]
 +
*[[Медиа: AirHockey.pdf|скачать отчет]]<br>
 +
*[https://Pasha123@bitbucket.org/Pasha123/air-hockey репозиторий]
 
===Постановка задачи===
 
===Постановка задачи===
 
Программно реализовать аэрохоккей с возможностью игры против компьютера.
 
Программно реализовать аэрохоккей с возможностью игры против компьютера.

Версия 18:37, 22 мая 2014

Аэрохоккей

Постановка задачи

Программно реализовать аэрохоккей с возможностью игры против компьютера.

Основные возможности программы

Для создания игрового искусственного интеллекта был реализован многослойный перцептрон Румельхарта. Для него можно:

  • задавать произвольное количество входных и выходных векторов произвольной размерности (реализовано с использованием шаблонов)
  • выбирать функцию активации нейронов
  • задавать произвольное количество скрытых слоев и нейронов в них
  • задавать параметры обучения нейронной сети
  • сохранять перцептрон в файл
  • загружать перцептрон из файла

Внутреннее устройство программы

Для разработки пользовательского интерфейса использовались средства Qt, для графики – OpenGl + freeglut.
Основные классы программы:

  • класс основного окна MainWindow (наследует от QMainWindow)
  • класс newgame для взаимодействия с пользователем при настройке параметров новой игры (наследует от QmainWindow)
  • класс Game (наследует от QGLWidget) — хранит все параметры игры, осуществляет пересчет координат, используется для визуализации
  • класс Player — хранит всю информацию об игроке
  • класс Ball — содержит всю информацию о шайбе

Реализация нейросети:

  • класс Neuron — хранит веса связей, рассчитывает выход нейрона
  • класс Layer — слой нейросети, хранит набор нейронов
  • класс Perceptron — хранит набор слоев, здесь реализованы все функции для считывания из файлов, обучения нейросети, сохранения результата в файл
  • еще несколько классов для передачи информации нейросети