Тип работы:
Предмет:
Язык работы:


Разработка самообучающегося робота для игровых мобильных приложений

Работа №129753

Тип работы

Бакалаврская работа

Предмет

информационные системы

Объем работы28
Год сдачи2019
Стоимость4700 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
53
Не подходит работа?

Узнай цену на написание


Введение 3
Обзор литературы 6
Глава 1. Используемые при реализации бота методы 8
1.1. Нейронные сети 8
1.2. Обучение с учителем 10
1.3. Обучение с подкреплением 11
1.4. Метод опорных векторов 12
Глава 2. Программная реализация бота 14
2.1. Описание игры 14
2.2. Поиск по шаблону 15
2.3. Применение обучения с учителем 16
2.4. Определение счета игры 17
Глава 3. Эксперимент 20
3.1. Обучение с учителем 20
3.2. Обучение бота 22
Выводы 25
Заключение 26
Список литературы 27


Создание бота [1], то есть программы, автоматически выполняющей определенные действия (самостоятельно играть) через тот же интерфейс, что и люди, для мобильной игры довольно интересная, полезная и актуальная задача. Существует очень много видов игр и их реализаций. Для их тестирования, предоставления возможности играть в многопользовательские игры одному игроку, а также для других целей, разрабатываются боты. Научив бота успешно играть в игру, можно автоматизировать ее тестирование, определение сложности уровней и прочее.
Главной целью выпускной квалификационной работы является разработка самообучающегося бота для мобильной игры. Его эффективность оценивается по количеству очков, зарабатываемых ботом в игре. Для реализации программы бота необходимы данные о происходящем в игре: набранные очки, положение игрока, и информация о различных важных объектах на игровом поле (вектор состояния). Вектор состояния используется для определения вознаграждения за выполняемые ботом действия при обучении с подкреплением.
Особенностью задачи является невозможность использовать и модернизировать код игры для получения данных, необходимых при обучении бота. Эта особенность обусловлена тем обстоятельством, что игра, для которой разрабатывается бот, не всегда имеет открытый доступный код. Поэтому все нужные данные следовало получать сторонними средствами с помощью обработки кадра игры.
При решении задачи распознавания на кадре игры распознаются цифры текущего счета, препятствия и графические элементы, обозначающие проигрыш игры. Каждый кадр игры - конкретное состояние бота и описание его окружения. Изображение кадра необходимо получить. Далее на основе полученных данных необходимо обучить бота, используя выбранные архитектуру нейронной сети и метод ее обучения.
Проблемы, которые решаются при разработке бота, то есть ситуации, с которыми он сталкивается в играх и с которыми необходимо справиться, довольно сильно связаны с реальной жизнью и можно найти в ней их отражения. Обход препятствий, взаимодействие с окружающей средой и враждебными факторами - всё это встречается как и в играх, так и в реальности. Можно сказать, что боты функционируют в игровом мире так же, как и механические роботы в нашем, и имеют схожие принципы обучения.
Самообучающиеся боты используются для достижения более человекоподобного поведения. Можно было бы жестко и явно прописать боту модель поведения, определенные действия в определенных ситуациях. Однако это слишком трудоемко, ведь предугадать все возможные игровые ситуации практически нереально. Одним из способов достижения самообучаемости бота является использование искусственной нейронной сети как основы для принятий решений о действиях, которые будет совершать бот для успешного продолжения игры. Существует несколько типов обучения нейронной сети: обучение с учителем, обучение без учителя и обучение с подкреплением. Для первого типа обучения необходим большой объем специально обработанных обучающих данных, которые не представляется возможным получить в рамках рассматриваемой задачи. Второй вариант обучения используется в задачах другого типа, в частности в задачах классификации. Третий вариант, обучение с подкреплением - наиболее подходящий и часто используемый вариант для тренировки нейросети, на основе которой функционируют боты.
Получение информации для вектора состояния было проведено несколькими способами, из которых были выбраны наиболее эффективные. Среди испытанных вариантов были поиск на кадре игры по шаблону, обучение с учителем и классификаторы на основе метода опорных векторов. Подробнее о использованных в работе методах можно прочитать в главе 1. Для получения различных данных, входящих в вектор состояния, были исследованы и использовались разные методы, что зависело от их возможностей и пригодности получения конкретных данных. Например, состояние бота, то есть жив он или игра окончена, и счет игры определялись отличными друг от друга способами. Подробнее об этом написано в главе 2.
В главе 3 описаны проведенные эксперименты, в частности по обучению бота. Также в ней указаны используемые параметры обучения и достигнутые результаты. Разработка велась на языке Python 3.6.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе работы были изучены теоретические основы разработки ботов и применяемых методов, в частности нейронные сети и обучение с подкреплением. Были реализованы поиск по шаблону, два классификатора с применением метода опорных векторов, обучение с учителем и обучение с подкреплением. Среди этих методов были выбраны наиболее подходящие для формирования вектора состояния в процессе обучения бота. Далее было реализовано непосредственно обучение бота, во время которого из кадров игры получалась информация с использованием ранее реализованных и отобранных для этого способов. Проведенный эксперимент показал, что тренировка бота, основанная не на адаптации исходного кода и непосредственной работе с игрой, а с использованием захвата кадра игры, работоспособна и эффективна.
В дальнейшем можно рассмотреть другие вариант получения кадра игры, не захватом экрана запущенной через эмулятор игры, а напрямую с телефона.



1. М. Тим Джонс, Программирование искусственного интеллекта в приложениях. 2 изд. ДМК Пресс, 2015. 312 с.
2. Using Reinforcement Learning techniques to build an AI bot for the game
Flappy Bird [Электронный ресурс]: URL:
https://medium.eom/@videshsuman/using-reinforcement-learning-technique s-to-build-an-ai-bot-for-the-game-flappy-bird-30e0fd22f990
3. How I built an AI to play Dino Run [Электронный ресурс]: URL: https://medium.com/acing-ai/how-i-build-an-ai-to-play-dino-run-e37f37bdf1 53
4. Minichino J., Howse J., Learning OpenCV 3 Computer Vision with Python. Packt Publishing, 2015. 268 с.
5. Levy L., Novak J., Game Development Essentials Game Qa & Testing. 1 изд. Cengage Learning, 2009. 320 с.
6. Shpigor I., Practical Video Game Bots: Automating Game Processes using C++. 1 изд. Apress, 2018. 344 с.
7. Хайкин С., Нейронные сети. Полный курс. 2 изд. Вильямс, 2018. 1104 с.
8. Richard S. Sutton, Andrew G. Barto, Reinforcement Learning: An Introduction. 2 изд. A Bradford Book, 2018. 522 с.
9. A Beginner's Guide to Deep Reinforcement Learning [Электронный ресурс]: URL: https://skymind.ai/wiki/deep-reinforcement-learning (дата обращения: 21.10.18).
10. Воронцов К. В. Лекции по методу опорных векторов [Электронный
ресурс]: URL: http://www.ccas.ru/voron/download/SVM.pdf (дата
обращения: 25.11.18).
11. Line Runner on Google Play [Электронный ресурс]: URL: https://play.google.com/store/apps/details?id=com.djinnworks.linerunnerfree (дата обращения: 21.01.19).
12. Rosebrock A., Practical Python and OpenCV: An Introductory, Example Driven Guide to Image Processing and Computer Vision. 2 изд. PylmageSearch, 2014. 160 с.
13.OpenCV: Object Detection [Электронный ресурс]: URL:
https://docs.opencv.org/3.4.0/df/dfb/group imgproc object.html (дата
обращения: 21.10.18).
14.Geron A., Hands-On Machine Learning with Scikit-Learn and TensorFlow: Concepts, Tools and Techniques to Build Intelligent Systems. 1 изд. O'Reilly Media, 2017. 574 с.



Работу высылаем на протяжении 30 минут после оплаты.




©2025 Cервис помощи студентам в выполнении работ