- •Введение.
- •1 Подходы к реализации ai в логических играх.
- •1.1 Понятие поиска.
- •1.2 Позиционная игра.
- •1.3 Подходы к решению задач выбора хода в позиционных играх.
- •1.4 Особенности игры нарды.
- •1.5 Правила игры в нарды.
- •1. 6 Оценочная функция
- •1.7 Самообучение
- •1.8 Нетранзитивность игр
- •1.9 Обзор литературы и существующих программ.
- •1.10 Игровые деревья.
- •1.11 Дерево игры в нарды
- •2 Построение эвристических оценочных функций.
- •2.1 Выделение параметров.
- •2.2 Определение более сильного игрока из двух.
- •2.3 Настройка весовых коэффициентов.
- •2.4 Линейная модель из 3-х параметров. Вид поверхности.
- •2.5 Таблицы вероятностей.
- •2.6 Снижение размерности. Гипергаммон.
- •2.7 Разделение игрового процесса на фазы.
- •3 Построение оценочных функций на основе нейронных сетей.
- •3.1 Теория нейронных сетей.
- •3.2 Использование нейронных сетей в качестве оценочной функции.
- •3.3 Использование MatLab для обучения нейронных сетей.
- •3.4 Экспериментальные данные.
- •4 Реализация версии для мобильных устройств.
- •4.1 Особенности программирования портативных устройств.
- •4.1.1 Размер экрана.
- •4.1.2 Быстрый отклик.
- •4.1.3 Ввод данных.
- •4.1.4 Питание.
- •4.1.5 Память.
- •4.1.6 Файловая система.
- •4.2 Выбор средств разработки.
- •4.3 Реализация игры.
- •Использованные классы.
- •Заключение.
- •Список литературы.
Использованные классы.
Наименование класса |
Назначение класса |
App |
Унаследован от класса Midlet. В нём создаются экземпляры имеющихся классов, а также находится точка входа в программу. Класс отвечает за запуск приложения и выход из него, а так же на всевозможные внешние реакции, например звонок. |
Board |
Данный класс представляет доску. Класс использует двумерный массив, который отвечает за содержимое каждой клетки доски. Также этот класс содержит количество фишек каждого игрока. |
MyCanvas |
Унаследован от класса Canvas. В нем находится код, отвечающий за управление процессом создания интерфейса пользователя, объявления набора данных необходимых для работы всего приложения. В этом классе содержатся объекты и методы, отвечающие за интерфейс, такие как меню, функция прорисовки доски, реакция на нажатия клавиш. В классе содержится оценочная функция, а так же алгоритм нахождения лучшего хода |
Таблица 1. Используемые классы.
Разработанная версия игры в короткие нарды основана на линейной модели. Выбор в пользу линейной модели а не НС был сделан в виду незначительного превосходства в качестве оценки позиций последней, но значительно возросшем количестве вычислений, что критично для мобильных устройств.
Заключение.
В процессе работы были реализованы короткие нарды. Поскольку в нардах присутствует элемент случайности (бросаются кости, которые определяют количество ходов), алгоритмы, основанные на рекурсивном переборе позиций, не позволяют добиться хороших результатов, необходимо было разработать хорошую функцию оценки. Для решения этой задачи были построены линейные модели и использовались нейронные сети с использованием игры с собой.
Для построения оценочной функции с использованием нейронных сетей, использовалось несколько подходов. Так, в одном из самых перспективных подходов для получения оценки вероятности выигрыша из данной позиции формировался некоторый набор позиций. И для каждой из этих позиций проводилось по N партий, между двумя равными сильными игроками. Причем, под числом побед белых над черными можно понимать оценку данной позиции. На сгенерированной таким образом выборке обучалась нейронная сеть и полученная сеть использовалась как оценочная функция. Можно повторять этот процесс итеративно для улучшения качества оценки.
К настоящему моменту был реализован прототип программы, обладающий значительной частью функциональности и реализующий алгоритм игры..
Список литературы.
Ф. Уоссермен, Нейрокомпьютерная техника: Теория и практика 1992г
Джонс М.Т. Программирование искусственного интеллекта в приложениях /М. Тим Джонс; Пер. с англ. – М.: ДМК Пресс 2004. – 312 с.: ил.
Эккель Б. Философия Java: Библиотека программиста Питер, 2001г
G.I. Belchansky, N.V. Korobkov, “Neural network application for analysis of satellite remote sensing data”, Research of the Earth form Space, 1998, N4, pp 111-120
Imran Ghory, Reinforcement learning in board games. 2004.
J.B.Pollack, A.D. Blair, Co-Evolution in the successful learning of backgammon strategy.
W.Duch, R.Adamczak, Statistical methods for construction of neural networks.
D.Stoutamire, Machine learning, game play, and Go.
W.S.Sarle, Neural networks and statistical models, 1994.
A.Shapiro, G.Fuchs, R.Levinson, Learning a game strategy using pattern-weights and self-play.
J.Baxter, A.Tridgell, L.Weaver, KnightCap: a chess program that learns by combining TD with game-tree search.
A.Junghanns, J.Shaeffer, Search versus knowledge in game-playing programs revisted.
G.Tesauro. TD-Gammon, a self-teaching backgammon program. Neural Computaion, 6:215-219, 1994.
J.Pollack & A.Blair “Co-Evolution in the successful learning of backgammon strategy.
M. Buro “Efficient approximation of backgammon race equities”.
Информационные ресурсы сети Интернет (http://www.bkgm.com, http://www.gnubg.org).
