208
208
Институт инфотехнологии
Веб программирование
Александр Мочёнов
IT-3-Q-V-Tal
Курсовая работа
Таллинн 2010
Искусственный интеллект в играх
Оглавление
Резюме 2
Введение 3
2 Практическая часть 10
2.1 Об игре “Войны планет‘‘ . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.1 Сущности игры . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.1.2 Правила игры . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1.3 Технические данные . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Подготовка к написанию ИИ . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2.1 Подготовка окружения для разработки . . . . . . . . . . . . . . 15
2.2.2 Процесс разработки . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.3 Выбор типа ИИ и метода его написания . . . . . . . . . . . . . . 17
2.2.4 Характер среды . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Стратегия и тактика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.3.1 Первый ход и расширение . . . . . . . . . . . . . . . . . . . . . 20
2.3.2 Самооборона . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.3.3 Защита своих войск . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.3.4 Атака . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.5 Перегруппировка . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.6 Хитрость и тактические приёмы . . . . . . . . . . . . . . . . . . 27
2.4 Внутреннее строение бота . . . . . . . . . . . . . . . . . . . . . . . . . 28
Заключение и выводы 31
Литература 33
1
Искусственный интеллект в играх
РЕЗЮМЕ
Данная работа состоит в целом из: 2 частей, более чем 6300 слов, 1 таблицы и 10 кар-
тинок.
В дополнение к основной целе работы автор ставит перед собой следующие задачи:
В ходе работы автор приходит к выводу, что для его задачи современные способы напи-
сания искусственного интеллекта не подходят. Структура полученного искусственно-
го интеллекта представляет собой стратегический план и делиться на 6 частей: первый
шаг, самооборона, защита своих войск, атака, перегруппировка и хитрость. Программ-
ный код составляет более 1000 строк, написанных на языке Python.
2
Искусственный интеллект в играх
ВВЕДЕНИЕ
История ИИ знала более 5 периодов упадка (т.н. “Зима в ИИ”) и столько же возрожде-
ний, каждый раз меняя вектор в изучения ИИ. По-этому до сих пор эта наука является
областью в которой имеется множество вопросов без ответов, а добиться результата
может каждый (Russell and Norvig, 1995), в отличии от более старых и фундаменталь-
ных областей вроде физики и химии. “Искусственный интеллект, с другой стороны,
всё ещё открывает возможности для проявления талантов нескольких настоящих Эйн-
штэйнов” (Russell and Norvig, 1995) Это всё делает ИИ для автора исключительно ин-
тересной областью для изучения.
3
Искусственный интеллект в играх
Целью автора является знакомство с областью науки ИИ, изучение её основ с после-
дующим применением полученных знаний на практике в ходе разработки и написания
собственного ИИ, играющего в игру с другими себе подобными. Для практического
задания автор участвует в соревновании “Google AI Challenge” ([Link]
com/), в ходе которого разрабатывает ИИ для игры “Войны планет”. Написание про-
граммы, которая играет в игру в качество одно из игроков, обладающему знаниями в
программировании автору, представляется не только интересным, но и весёлым заня-
тием. Такую программу принято называть ботом (сокращение от слова робот). Мето-
дология, применяемая автором, в основном квалитативна и выводы по большей части
представляют, основанное на полученных результатах, субъективное мнение автора.
“Войны планет” – так называется игра для которой автор пишет ИИ. Как следует из
названия в каком-то смысле игра о войне. По-этому как дополнение к написанию своего
бота, автор ставит задачу проверки применимости знаний о военном ремесле, взятых
из древнего трактата Сунь Дзы “Искусство войны”, к дизайну стратегий и тактик ИИ.
Так же автор ставит задачу изучения системы компьютерной вёрстки LATEX, приме-
нения её в ходе написания данной работы. Эта система широко применяется в науч-
ной среде для написания статей, книг и прочих научных работ, по-этому такие знание
должны быть полезны автору в целом и как тренировка перед написанием дипломной
работы.
Данная работа будет полезна всем, кому интересна тема ИИ. Ознакомившись с дан-
ной работой, можно сложить представление о том, что можно сделать и с чего можно
начать, если стоит задача в написании игрового ИИ.
3
Сайт на котором можно делать git хранилище и делиться открытым исходным годом с обществом
4
Искусственный интеллект в играх
“Может ли машина мыслить?” – этим вопросом задался Алан Тюринг в 1950 году в ста-
тье “Вычислительная машина и интеллект” (Alan, 1950), в которой он предлагает тест
на способность машины проявлять интеллектуальность. Суть теста такова: человеку
даётся возможность пообщаться с кем-то через текстовую консоль (чат), после чего
человека спрашивают - говорил ли он с ИИ или с человеком? Если ИИ заставляет по-
верить, что он - настоящий человек или даже просто засомневаться, то тест считается
пройденным. Этот тест является основой в философии об искусственном интеллекте,
хотя и подвергался неоднократной критике. (Searle, 1980) На данный момент ни один
ИИ не справился с ним на 100 процентов.
Как уже было сказано выше ИИ развивается с 50-ых годов ХХ века. За это время сло-
жилось два основных направления в написании ИИ.
5
Искусственный интеллект в играх
ИИ такого типа может обладать большой базой знаний и не очень сложными алгорит-
мами. Таковыми являются, например, экспертные системы (ЭС). ЭС - это программы,
которые заменяют человека-эксперта в какой-либо области. Их цель - дать заключение
(решение) для задачи, исходя из полученных входных данных, используя имеющую-
ся базу знаний, которая пополняется или вручную или автоматически, если система
обладает способностью к самообучению.
До 80-ых годов символьный подход служил опорой для написания ИИ, которые реша-
ли не сложные задачи, что с учётом компьютерной техники того времени считалось
большим достижением. Когда набор проблем, которые пытались решить с помощью
ИИ начал расширяться и усложняться, символьно-логический подход уже не мог спра-
виться с многими из них.
6
Искусственный интеллект в играх
Стоит заметить, что нейронные сети, например, были предложены и разработаны ещё
в 1943 г. (McCulloch and Pitts, 1943) Кто-то считает движение от символьного исчисле-
ния к биологическим прогрессом, а кто-то полагает, что это просто дань моде, разной в
разные времена. (Millington and Funge, 2009) Автор лично придерживается мнения, что
какие-то задачи хороши для решения старым, проверенным методом символьной логи-
ки. При этом с использованием биологических моделей решение получается не столь
эффективным и требует больше усилий, а другие наоборот. Другие же задачи наобо-
рот лучше решать современным методами. Например многие задачи компьютерного
зрения хорошо решаются искусственными нейронными сетями. (Haykin, 1994)
Все ИИ написанные для игр можно разделить на две категории: “Хороший” и развле-
кательный ИИ.(Johnson, 2010) При этом “хороший” тут не качественный показатель, а
имя собственное. Это зависит от типа игры и от ожиданий игрока.
7
Искусственный интеллект в играх
8
Искусственный интеллект в играх
Как будет видно из 2 части, механизмами восприятия и воздействия в данной игре будет
являться программный API. Описание конкретной среды, в которой находиться ИИ и
критерии производительности так же будут описаны ниже.
9
Искусственный интеллект в играх
2 ПРАКТИЧЕСКАЯ ЧАСТЬ
Для того чтобы более конкретно представить себе хотя бы частично как создаётся ИИ и
с какими проблемами приходиться сталкивать автор выбирает в качестве практическо-
го задания написание ИИ для какой-либо игры. Для этого автор принимает участие в со-
ревновании “Google AI Challenge” ([Link] организованном ком-
пьютерным клубом при Университете Уотерлоу (англ. “University of Waterloo”). Ком-
пания Google является лишь спонсором проводимого мероприятия. (AIChallangeFAQ)
Игра “Войны планет” (далее ВП или просто игра) - это пошагавая стратегическая игра
для 2-ух и более игроков (рис. 2.1a). Она основана компьютерной игре “Galcon”
([Link] рис. 2.1b), специально переработанная для
соревнования. В частности, в оригинале игра реального времени, что для упрощения
процесса было заменено пошаговым стилем, давая тем самым право хода каждому
игроку-боту по очереди.
10
Искусственный интеллект в играх
(a) Визуализатор игры на сайте конкурса (b) Flash игра “Galcon” на офциальном сайте
ВП представляют собой 2D холст или карту, где происходит сама игра, на котором дей-
ствуют следующие сущности (рис. 2.2):
Планета
Планета может
11
Искусственный интеллект в играх
Флотилия и корабль
Флотилия - это группа кораблей, которые планета источник пустила по направ-
лению к планете приёмнику. Флотилия “живёт” количество ходов, равное рассто-
янию между планетами источника и приёмника, перемещаясь за каждый ход на
одну единицу2 по направлению к цели. С момента выпуска флотилии с ней ни-
чего нельзя сделать: ни поменять направления, ни отменить решения. Корабль
- это разменная единица, из которых “состоят” флотилии и которые производят
планеты участников.
Выбор
Решение, которое принимает ИИ игрока на каждом полу-ходу3 партии (см. 2.3).
Он состоит из набора новых флотилий, выпускаемых на этом ходу игроком.
12
Искусственный интеллект в играх
Игра разделена на ходы. Каждый ход состоит из двух полу-ходов для каждого из иг-
роков. Во время полу-хода игрок делает выбор, отдавая приказания о выпуске новых
флотилий, указывая планеты отправителя, планету назначения (приёмник) и количе-
ство кораблей в каждой флотилии. Планетами отправителя могут быть только свои
планеты, а количество кораблей в отправляемой флотилии не должно превышать ко-
личество имеющихся на планете. В момент отправки флотилии количество кораблей
на планете уменьшается на столько, сколько их во флотилии.
Когда флотилия достигает места назначения она исчезает, изменяя статус для планеты
приёмника. Это изменение зависит от сопренадлежности флотилии и планеты приём-
ника к игрокам. Могут произойти следующие варианты:
Цель игры - захватить как можно больше планет за максимум 200 ходов. На каждый ход
игроку даётся одна секунда. Игра заканчивается или по истечению одного из лимитов,
или если у одного из игроков закончатся корабли (как на планетах, так и во флотилиях).
(PlanetWarsSpec)
13
Искусственный интеллект в играх
четыре варианта для: C++, Java, Python, C#. Основной движок конкурса поддерживает
запуск ботов, написанных также на: Haskell, Ruby, Javascript, PHP, Perl, OCaml и Lisp’е.
Стартовые пакеты для них можно найти на форуме соревнования. Автор другим языкам
предпочитает Python, по-этому именно на нём он пишет своего бота.
Для того, что бы участвовать в конкурсе в одном из файлов необходимо заполнить ло-
гикой метод “def DoTurn(pw): ... ”, где на вход поступает объект в котором имеется
API для доступа ко всей информации об игровом состоянии среды. С помощью этого
API можно узнать где, какие планеты располагаются, сколько у кого кораблей, от куда
куда движутся флотилии, когда прибудут и т.д.
После реализации бота все необходимые файлы для его запуска надо запаковать в архив
и залить на официальный сервер, где бот игрока будет периодически играть с другими
ботами, имеющих примерно тот же рейтинг. В зависимости от исхода каждой партии
меняется количество очков участника, что сдвигает его в общей рейтинговой таблице.
На рисунке 2.3 вдно, что в начале игры читается файл с описанием начальной карты, ко-
торая составляет начальное состояние игры. Это состояние передаётся первому игроку,
который делает свой выбор и отдаёт назад приказы об отправлении новых флотилий,
после чего всё тоже самое повторяется для второго игрока. Далее движок обрабатыва-
ет полученные выборы, применяя их к текущему состоянию игры, а так же он делает
передвижение уже имеющихся флотилий, происходит прирост кораблей на планетах
14
Искусственный интеллект в играх
В ходе первых попыток написания собственного бота, автор столкнулся с рядом слож-
ностей, в связи с чем составил список того, что необходимо сделать для успешного
завершения проекта прежде чем приступать к непосредственному писанию ИИ.
Журналирование
Система при которой игровой движок общается с ботами в виде отдельных про-
цессов через стандартный ввод-вывод означает отсутствие возможности поша-
говой отладки даже во время тестирования на локальном компьютере. По-этому
автор с самого начала создал систему журналирования (или логов), которая до-
статочно полно раскрывала процессы, происходящие во время игры.
Свой движок
Чтение логов утомительный процесс и занимает слишком много времени. Для
решения этой проблемы и для более глубокого понимания процессов, происхо-
дящих в движке игры автор решил переписать движок на языке Python. Это поз-
волило подключать ИИ напрямую к движку в качестве библиотеки, тем самым
довая возможность для отладки.
Модификации в визуализаторе
Так же для удобства разработки автор модифицировал визуализатор сыгранных
игр, написаны на Java и поставляемый в стандартном наборе (рис. 2.4).
15
Искусственный интеллект в играх
В частности:
Написание тестов
В подобной задаче безусловным подспорьем являются модульные тесты, кото-
рые также присутствуют в написанном ИИ
16
Искусственный интеллект в играх
1. Написание первого бота и тестирование его на всех картах против всех простых
ботов, что идут в начальном наборе.
2. Улучшение бота до тех пора, пока он не будет побеждать в 100% случаях.
3. “Замораживание” бота в его текущем состоянии и установка его на место про-
тивника и переход к пункту 2. Т.е. теперь задача играть против своего же бота, и
улучшая следующее поколение прийти к полной победе над ним.
4. Периодически пользоваться TCP Server’ом ([Link]
Это неофициальный централизованный сервер, на котором можно в реальном
времени сразиться с другими клиентами сервера. Главное отличие от официаль-
но сервера заключается в следующем:
(a) В скорости. Подключившись игра начинается практически сразу, в отличии
от официального сервера, где каждый бот играет в среднем раз в пол часа.
(b) Не нужно заливать свой программный код на сервер. Код бота запускает-
ся на компьютере его владельца, тем самым давая возможность записывать
логи для последующего анализа.
(c) Игроки на TCP Server’е зачастую очень сильные, по-этому для бота это всё
равно что стресс тестирование.
5. Если появляется ощущение, что бот уже достаточно работоспособный, его можно
упаковывать и засылать на официальный сервер и переходить к пункту 3.
На рисунке 1.1 (стр. 8) показана модель простейшего агента. Если сравнить её с рисун-
ком 2.3 (стр. 14), то можно заметить, что схема игрока №1 емеет те же составные части
(вход, выход, принятие решения), что и агент. По-этому автор считает уместным в дан-
ной задаче применение агентно-ореинтированного подхода. По сути надо реализовать
белый ящик со знаком вопроса на рисунке 1.1 или более формально функцию агента.
17
Искусственный интеллект в играх
Изучая вопрос эффективности различных методов и подходов для написания ИИ, автор
ознакомился с некоторыми мнениями специалистов. Так, Антон Сафонов (MSc, маги-
стерская работа которого была посвящена комбинированию методов оптимизации роя
частиц и монте-карло метода) считает, что данная задача должна решаться “современ-
ными способами, т.е. необходимо сделать так, что бы не нужно было говорить про-
грамме как решать задачу, а что бы программа сама находила пути её решения”. Т.е.
его идея заключалась в применении оптимизированных алгоритмов поиска, абстраги-
руясь от конкретных планет и флотилий до понятий вроде “скопление сил”, решая тем
самым проблему чрезмерного коэффициента ветвления в ВП. Автору такой подход,
ввиду отсутствия необходимых познаний в данной области, показался слишком слож-
ным и непонятным. Более того, ему кажется, что именно “ручной” способ написания
ИИ в данном случае будет более эффективным.
18
Искусственный интеллект в играх
Это правило действительно и тут, потому что игра продолжается максимум 200 ходов.
Что бы достичь победы, медлить нельзя. В этой игре быстрота развёртывания сил и
захвата планет очень важен. В момент главного сражения разница в одну планету может
решить исход исход партии.
19
Искусственный интеллект в играх
Как уже говорилось ранее в начале игры у обоих игроков условия совершенно идентич-
ные. У каждого есть по планете с сотней кораблей, а все остальные планеты находятся
на равных расстояниях от начальных планет игроков, т.к. карта симметричная. Из этого
можно ещё раз подчеркнуть мысль, что исход каждого поединка зависит исключитель-
но от алгоритмов игроков.
Вся стратегия автора делиться на 6 этапов или элементов. Алгоритм проходит через все
эти этапы принимает решение о выборе. Каждый из них описан далее более подробно.
Самым первым этапом игры является фаза “развёртывания”, в которой особенно важ-
но самый первый выбор. Причина тому в симметричности первоначального состояния
игры для обоих игроков. По-этому очень важно с первых секунд игры попытаться по-
лучить преимущество, выбрав планеты для первой атаки наиболее эффективно.
“Тому, кто первым приходит на поле сражения и ожидает врага, будет легко;
тот, кто приходит после и должен спешить в бой, будет утомлен”
(Tzu, 6 век до Н.Э.)
В отличая от шахмат в этой игре нету игрока идущего первым, оба игрока делаю свой
первый плоху-ход не зная о решении противника. Неправильное решение на первом
шаге может закончиться быстрой победой противника. Пример на рисунке 2.5.
20
Искусственный интеллект в играх
На самом деле при хорошей самообороне и правильно выбранной функции выбора цели
для атаки (см. 2.3.4) никакой особой логики в первый ход вкладывать не обязательно
(будет видно далее). Хотя автор всё же разработал рефлекс4 который срабатывает на
первом и последующих ходах, если ситуация такая как описана выше. Он оставляет
все корабли на первом ходу, а на втором посылает все корабли на главную планету
противника.
2.3.2 Самооборона
Самооборону можно считать пожалуй самым важным этапом всей стратегии. От то-
го как хорошо и безошибочно реализован этот модуль алгоритма зависит результатив-
ность всего бота. Побеждает тот, у кото суммарный прирост кораблей на всех планетах
больше. По-этому потеря любой своей планеты ведёт к изменению этого отношения, а
значит этого нельзя допустить ни в кое случае.
“Поэтому тот, кто преуспел в войне, первым делом выбирает позицию, где
он не может быть разбит, вместе с тем не упуская [любой возможности]
разбить врага.”
(Tzu, 6 век до Н.Э.)
21
Искусственный интеллект в играх
Для принятия решения о том сколько кораблей необходимо забронировать для защиты
надо найти минимальное количество кораблей, какое будет в будущем у планеты. В
данному случае это число 3. Следовательно, что бы к этому моменту планета осталась
наша (пусть даже без кораблей) сейчас на ней должно остаться 25 − 3 = 22 корабля, а
остальными уже можно пользоваться.
22
Искусственный интеллект в играх
всё что у них есть по направлению к данной планете. Потенциальной угрозой мож-
но считать все планеты противника, что находятся ближе чем первая ближайшая своя
планеты. Это показано на рисунке 2.7.
На рисунке видно, что потенциальной угрозой можно считать две нижних планеты,
верхняя же планета противника (тёмная) не является угрозой, т.к. на подмогу централь-
ной успеет прийти своя же планета (сверху светло-серая).
Бронирование кораблей необходимо делать в отдельном цикле так, что бы все другие
этапы уже имели информацию о том, на сколько кораблей они могут рассчитывать.
Теперь должно быть понятно, почему использование особой логике на первом шагу
не обязательно. В случае первого шага данный алгоритм самозащиты увидит стоящую
рядом планету противника и рассчитает сколько ему можно пустить на расширение
так, что бы в случае если все 100 кораблей полетят на него, он бы смог отбиться.
23
Искусственный интеллект в играх
2.3.4 Атака
Когда все необходимые корабли забронированы для самообороны, и все флоты вы-
сланы на подмогу своим планетам, тогда все оставшиеся свободные корабли можно
использовать для атаки. Краеугольным камнем атаки является правильный выбор це-
ли. Для этого необходимо написать оценочную функцию, которая будет оценивать по-
лезность атаки не своих планет для каждой своей планеты. Таким образом у каждой
своей планеты образуется список планет отсортированный по этому коэффициенту, из
которых каждая по одной рассматривается в качестве цели. В случае, если количество
кораблей, которое будет на планете цели к моменту прилёта флотилии будет меньшим,
чем есть на данной (для которой ищется цель), то можно отправить флотилию для её
захвата.
Важно понимать, что отправлять флотилию для атаки можно только будучи уверенном
в её захвате, иначе игрок просто потеряет корабли, ничего не получив в замен.
24
Искусственный интеллект в играх
Sq
kpq = dpq + ( ) (2.1)
Gq
Таким образом не всегда самые близкие и самые слабые планеты становятся более же-
лаемой целью, как показано на рисунке 2.8.
Эту функцию оценки нельзя использовать в чистом виде, т.к. могут возникнуть ситуа-
ции, когда планета с самым низким коэффициентом находится ближе к противнику чем
к вам. В таком случае такая атака может провалиться. Причиной тому хитрость под на-
званием “перехват”, которая будет рассмотрена ниже (см. 2.3.6). А пока можно просто
ввести как правило, что атаковать планеты, которые ближе к противнику чем к игроку
- нельзя. Особенно это касается первых ходов, когда планеты с хорошим коэффици-
ентом находятся как на одной так и на другой “сторонах поля”. Так же нежелательны
любые длинные перелёты кораблей, т.к. это ведёт к потери контроля над ситуацией, и
за время полёта флотилии противник успеет сгруппироваться и защититься. Для этого в
оценочную функцию можно внести зависимость от расстояние. Например, умножение
расстояние на некий коэффициент больше нуля, таким образом заставляя увеличивать
результат функции по мере увеличения расстояния.
2.3.5 Перегруппировка
Как и инвесторы не любят, когда их деньги лежат и “не работают”, так и игрок должен
заботиться о том, что бы все генерируемые корабли приносили свой вклад в победу. В
частности может возникнуть ситуация, когда рядом с данной планетой нету ни одной
25
Искусственный интеллект в играх
нейтральной или планеты противника. В таком случае все свободные корабли должны
быть переправлены ближе к “линии фронта”, которая часто образуется в игре между
достаточно развитыми ботами.
Что бы перегруппировать корабли необходимо найти цель, которую надо атаковать, по-
сле чего найти ближайшую к нему свою планету. Эта планета называется атакующей.
Зная атакующую планету необходимо найти к ней наиболее подходящий путь. Для это-
го можно представить все планеты в виде полносвязного графа, где вершинами являют-
ся планеты, а все возможные пути между ними рёбрами. Тогда можно воспользоваться
одним из имеющихся алгоритмов поиска кратчайшего пути между вершинами.
(Cormen, 2001)
Но для упрощения задачи можно найти такой путь более простым способом. Он схе-
матично изображён на рисунке 2.9.
Рис. 2.9: Выбор потенциального звена при перегруппировки сил по направлению к ата-
кующему
26
Искусственный интеллект в играх
“Война - это путь обмана. Поэтому, даже если [ты] способен, показывай
противнику свою неспособность. Когда должен ввести в бой свои силы,
притворись бездеятельным. Когда [цель] близко, показывай, будто она дале-
ко; когда же она действительно далеко, создавай впечатление, что она близ-
ко.”
(Tzu, 6 век до Н.Э.)
Одна такая хитрость называется “перехват”. Суть её в том, что бы перехватывать толь-
ко что захваченные врагом планеты. Т.к. чаще всего игроки захватывают планеты с
минимальным количеством кораблей во флотилии, то на планетах, сразу после захвата
практически нет кораблей. Если такой случай вовремя предвидеть, и вовремя послать
свои корабли, прилетающие туда же на один ход позже, то можно небольшой жертвой
захватить новую планету.
Важно отметить, что от каждой придуманной тактики и хитрости должна быть проду-
мана и реализована эффективная защита.
27
Искусственный интеллект в играх
На рисунке видно, что класс с самим ботом MyBot унаследуется от класса Bot, который
является подобием интерфейса (в Python нету понятия интерфейса как такового). Bot
нследуется напрямую от класса PlanetWars, хранящего состояние игры и все необхо-
димые API для работы с ним: методы восприятие среды и воздействие на неё. В част-
ности, в PlanetWars хранится список планет и список флотилий. Сам PlanetWars
наследуется от класса Debbugable, который отвечает за обеспечение условного жур-
налирования и вывода на экран отладочных данных. Пример исходного кода приведён
в листинге 2.1.
1 def sim_arrivals(self, distances, p):
2 ”””Simulate end state of the game for given planet.
3
4 distances: List of tuples of objects are going to this planet.
5 p: planet for simulation
6 ”””
7 history = []
8 prev_distance = 0
9 [Link](([Link], p.num_ships, 0))
10 for dist_group in distances:
28
Искусственный интеллект в играх
29
Искусственный интеллект в играх
30
Искусственный интеллект в играх
ЗАКЛЮЧЕНИЕ И ВЫВОДЫ
Всё это помогло автору выбрать направление, наиболее простое, но тем не менее по
мнение автора эффективное. Так это или не так покажет время, но на данный мо-
мент возможности ИИ автора не предвещают полной неудачи на конкурсе, что говорит
о жизнеспособности выбранного пути написания ИИ. Профиль автора и все сыгран-
ные его ботом игры можно найти по адресу [Link]
user_id=3984
На момент написания работы автор всё ещё занимается разработкой ИИ, т.к. сорев-
нование заканчивается в декабре 2010 года. На данный момент более 1000 строк кода
написано и потрачено более 100 человеко-часов. По условиях конкурса и исходя из
здравого смысла выкладывать код самого ИИ нельзя, по-этому его нет на сайте github.
Тем не менее полный исходный код бота можно найти по адресу [Link]
ee/ai/[Link].
При изучении древнего трактата о военном ремесле Сунь Дзыня “Искусство войны”
автор обнаружил несколько подходящих под описание стратегии игры мыслей. Пусть
31
Искусственный интеллект в играх
игра называется “Войны планет”, всё же нельзя говорить, что описанные советы и за-
коны могут один в один лечь в основу стратегии ИИ. Впрочем это и ожидаемо, игра
слишком проста, что бы в ней можно было применить всю глубину мудрости описан-
ного в трактате.
32
Литература
T.H. Cormen. Introduction to algorithms. The MIT press, 2001. ISBN 0262032937.
S. Haykin. Neural networks: a comprehensive foundation. Prentice Hall PTR Upper Saddle
River, NJ, USA, 1994. ISBN 0023527617.
W.S. McCulloch and W. Pitts. A logical calculus of the ideas immanent in neural nets. Bulletin
of Mathematical Biophysics, 5(1):15–137, 1943.
I. Millington and J. Funge. Artificial intelligence for games. Morgan Kaufmann, 2009.
H. Moravec. When will computer hardware match the human brain. Journal of Evolution
and Technology, 1(1), 1998.
O. Morgenstern and J. Von Neumann. Theory of games and economic behavior. Princeton
University Press Princeton, NJ, 1947.
S.J. Russell and P. Norvig. Artificial intelligence: a modern approach. Prentice hall, 1995.
J.R. Searle. Minds, brains, and programs. Behavioral and brain sciences, 3(03):417–424,
1980.
33