ИНС для игры в аэрохоккей — различия между версиями
Материал из Department of Theoretical and Applied Mechanics
Test (обсуждение | вклад) (→Внутреннее устройство программы) |
|||
(не показаны 2 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
+ | [[Файл:Airhockey.png|thumb|Аэрохоккей|500px]] | ||
+ | *[[Медиа: AirHockey.pdf|скачать отчет]]<br> | ||
+ | *[https://bitbucket.org/Pasha123/air-hockey репозиторий] | ||
===Постановка задачи=== | ===Постановка задачи=== | ||
Программно реализовать аэрохоккей с возможностью игры против компьютера. | Программно реализовать аэрохоккей с возможностью игры против компьютера. |
Текущая версия на 18:40, 22 мая 2014
Постановка задачи[править]
Программно реализовать аэрохоккей с возможностью игры против компьютера.
Основные возможности программы[править]
Для создания игрового искусственного интеллекта был реализован многослойный перцептрон Румельхарта. Для него можно:
- задавать произвольное количество входных и выходных векторов произвольной размерности (реализовано с использованием шаблонов)
- выбирать функцию активации нейронов
- задавать произвольное количество скрытых слоев и нейронов в них
- задавать параметры обучения нейронной сети
- сохранять перцептрон в файл
- загружать перцептрон из файла
Внутреннее устройство программы[править]
Для разработки пользовательского интерфейса использовались средства Qt, для графики – OpenGl + freeglut.
Основные классы программы:
- класс основного окна MainWindow (наследует от QMainWindow)
- класс newgame для взаимодействия с пользователем при настройке параметров новой игры (наследует от QmainWindow)
- класс Game (наследует от QGLWidget) — хранит все параметры игры, осуществляет пересчет координат, используется для визуализации
- класс Player — хранит всю информацию об игроке
- класс Ball — содержит всю информацию о шайбе
Реализация нейросети:
- класс Neuron — хранит веса связей, рассчитывает выход нейрона
- класс Layer — слой нейросети, хранит набор нейронов
- класс Perceptron — хранит набор слоев, здесь реализованы все функции для считывания из файлов, обучения нейросети, сохранения результата в файл
- еще несколько классов для передачи информации нейросети