Создание системы управления танком для игры Robocode с использованием генетических алгоритмов

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

Построен автопилот с 12 состояниями, который проводит вертолет через первые 18 целей из 20 за отведенное время. Установлено, что при увеличении времени полета на 33 условных единицы полученный автопилот обеспечит прохождение всех 20 целей.

Литература

1. Шалыто А. А. Технология автоматного программирования / Труды первой Всероссийской конференции «Методы и средства обработки информации». - М.: МГУ. 2003. - Режим доступа: http://is.ifmo.ru/works/tech_aut_prog

2. Koza J. R. Genetic programming. On the Programming of Computers by Means of Natural Selection. - The MIT Press, 1998. - Режим доступа: www.ru.lv/~peter/zinatne/ebooks/MIT%20-%20Genetic%20Programming.pdf

3. Mitchell M. An Introduction to Genetic Algorithms. Cambridge. - MA.: MIT Press, 1996.

4. Лобанов П.Г., Шалыто А.А. Использование генетических алгоритмов для автоматического построения конечных автоматов в задаче о флибах // Известия РАН. - Теория и системы управления. - 2007. - № 5. - С127-136.

5. Wolfram S. A New Kind of Science. Champaign. - Wolfram Media, 2002.

6. Mitchell M., Crutchfield J., Hraber P. Evolving cellular automata to perform computations // Physica D. - 1993. - V. 75. - Р. 361-391.

7. Бедный Ю.Д. Применение генетических алгоритмов для решения одной задачи на клеточных автоматах. Задача классификации плотности для клеточных автоматов. -Бакалаврская работа / СПбГУ ИТМО. - 2006. - Режим доступа: http://is.ifmo.ru/papers/genalgcelaut/

8. Jefferson D., Collins R., Cooper C., Dyer M., Flowers M., Korf R., Taylor C., Wang A. The Genesys System: Evolution as a Theme in Artificial Life. // Artificial Life II: Proceedings of the Workshop on Artificial Life. - NJ: Addison-Wesley, 1992. - Р. 549-578. - Режим доступа: www.cs.ucla.edu/~dyer/Papers/AlifeTracker/Alife91Jefferson.html

УДК 004.4'242

СОЗДАНИЕ СИСТЕМЫ УПРАВЛЕНИЯ ТАНКОМ ДЛЯ ИГРЫ ROBOCODE С ИСПОЛЬЗОВАНИЕМ ГЕНЕТИЧЕСКИХ

АЛГОРИТМОВ Ю.Д. Бедный, А.А. Шалыто

В работе предлагается метод создания системы управления танком для игры Robocode, основанный на применении генетических алгоритмов, что позволяет автоматизировать процесс построения системы управления. Кроме того, рассматривается способ улучшения генерируемых систем управления за счет использования более сложного алгоритма управления, реализованного с помощью конечного автомата. Ключевые слова: генетические алгоритмы, конечный автомат, Robocode, автоматное программирование

Введение

В работе предлагается метод автоматизации построения системы управления танком для популярной компьютерной игры Robocode [1]. Этот метод позволяет на основе

использования генетических алгоритмов [2, 3] строить достаточно простые системы управления танком. Работа не ставит своей целью создание танка, способного побеждать танки, построенные вручную, которые являются наилучшими из известных на сегодняшний день (например, танк voidious.Dookious). Алгоритмы, используемые в таких танках, являются достаточно сложными, и их реализация занимает сотни килобайт, а работа по их созданию крайне трудоемка.

Рис. 1. Пример боя в игре РоЬосоЬе

Танки, создаваемые предлагаемым методом, должны побеждать в индивидуальном сражении каждого заранее выбранного соперника из тестового набора, который включает в себя танки, поставляемые вместе с игрой, а также танк newCynic.Cynical [4]. Выбор последнего был связан с тем, что этот танк (как и прототип, на основе которого он построен [5]), в отличие от многих других танков, был предварительно спроектирован, и для него существует достаточно подробная открытая проектная документация. Для каждого танка из тестового набора с помощью предлагаемого метода генерируется танк, который его побеждает. Предлагаемый метод позволяет генерировать танки, системы управления которых построены как с применением автоматного подхода [6], так и без его использования. Если автоматы не используются, то система управления описывается только одной функцией, формирующей выходные воздействия на объект управления. При автоматном подходе для каждого состояния автомата определена соответствующая функция управления.

На рис. 1 в качестве примера приведен внешний вид среды игры ЯвЬвевёв во время одного из боев. На этом рисунке разработанный танк назван ЕувЬвёТапк.

Обзор

Известно большое число танков для рассматриваемой игры [7]. Наиболее простые из них реализованы всего несколькими строками кода, а программы, реализующие наиболее сложные танки, как отмечалось выше, занимают сотни килобайт. Большинство

танков создано вручную. Существуют также работы [8, 9], в которых танки строятся не вручную, а автоматически - с применением методов искусственного интеллекта.

В работе [8] использовано несколько таких методов (обучение с подкреплением, нейронные сети и генетические алгоритмы) для управления различными системами танка (радаром, системой движения и пушкой). Генетические алгоритмы в работе [8] применялись для создания систем управления радаром и движением танка. Однако их использование не привело к желаемому результату - система управления радаром осуществляла его поворот на 360°, а система передвижения задавала перемещение танка по кругу. В работе [9] используется сравнительно сложный способ представления системы управления в виде особи генетического алгоритма - программы на языке ТаМвЯвх. При этом длина программы составила 7776 бит.

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

Устройство танка схематично показано на рис. 2. Необходимо управлять следующими устройствами: радаром (Radar), пушкой (Gun) и системой движения (Body).

Управление танком осуществляется следующим образом. В каждый момент времени анализируется текущая ситуация (положение танка, его скорость и т. д.). На основе этой информации формируются четыре действия: передвижение (вперед/назад), поворот, поворот пушки, стрельба. Указанные действия формируются в результате интерпретации функции управления, которая генерируется на основе генетических алгоритмов.

Перейдем к формальной постановке задачи. Обозначим текущее время в игре как

• е N, а максимальное время, которое возможно для данной игры - М. Обозначим множество позиций как 8, а множество действий танка как А. Позиция - элемент некоторого множества всех возможных ситуаций в игре в выбранный момент времени. Позиция включает в себя положение каждого танка, его скорость, направление, угол поворота пушки и радара, энергию, информацию о танке соперника и т. д. Задача управления для рассматриваемой игры в общем случае состоит в задании для каждого момента времени I функции управления : ^ А, которая на основании информации о

позициях во все предыдущие моменты времени (получаемой из среды КоЬосойё) определяет действие на объект управления в текущий момент времени. Таким образом, решение задачи управления танком - вектор [/1, /2 к /м ]Т .

В данной работе решается упрощенная задача управления:

• действие танка в текущий момент времени зависит только от позиции в этот момент времени;

• зафиксирован алгоритм управления радаром - вращение по кругу;

• при выборе действия анализируется лишь упрощенная позиция - элемент множества S' = {<х, y, dr, tr, w, dh, GH, h, d, e, E >}. Здесь:

o х, y - координаты танка соперника относительно нашего танка; o dr - расстояние, которое осталось «доехать» нашему танку (после вызова метода

AdvancedRobot.setAhead); o tr - угол, на который осталось повернуться нашему танку; o w - расстояние от нашего танка до края поля;

o dh - угол между направлением на танк соперника и пушкой нашего танка; o GH - угол поворота пушки нашего танка; o h - направление движения танка соперника; o d - расстояние между нашим танком и танком соперника; o e - энергия танка соперника; o E - энергия нашего танка;

• множество действий A = {g, p, d, h}, где g - угол поворота пушки, p - энергия снаряда (неположительные значения означают, что выстрел не производится), d - расстояние, на которое перемещается танк, h - угол поворота танка.

Учитывая изложенное, задача построения системы управления танком сведена к заданию функции f : S' ^ A . Эту функцию будем искать автоматически с использованием генетических алгоритмов, а точнее, с помощью их разновидности, обладающей высокой эффективностью - программированием с экспрессией генов (Gene Expression Programming) [10]. В отличие как от стандартных генетических алгоритмов, использующих строки фиксированной длины, так и от генетического программирования [11], использующего деревья, хромосомы в генетическом программировании с экспрессией генов представляются в виде строк фиксированной длины, которые преобразуются в так называемые Karva-деревья. Генетические операции с такими деревьями (в отличие от генетического программирования) корректны по определению. За счет этого при использовании программирования с экспрессией генов не приходится тратить время на проверку корректности деревьев, получаемых в результате скрещивания и мутаций. Это обеспечивает используемому подходу указанные преимущества перед генетическим программированием.

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

Как было отмечено во введении, предлагаемый метод позволяет строить системы управления, как с использованием автоматного подхода, так и без его применения. Ниже эти подходы рассматриваются отдельно.

Построение системы управления без применения автоматов

Сначала опишем подход, не предполагающий использования автоматов при создании системы управления.

Общая схема генетических алгоритмов

Схема одного шага работы генетических алгоритмов приведена на рис. 3.

Рис. 3. Один шаг работы генетических алгоритмов

Представление в виде хромосомы

Для описания в виде особи генетического алгоритма искомой функции управления / : 5' ^ А предлагается представлять ее в виде четырех функций /, каждая из

которых возвращает вещественное число: / - угол поворота пушки, /2 - энергия снаряда, 73 - расстояние, на которое перемещается танк, /4 - угол поворота танка. В свою очередь, функция / представляется в виде Катуа-дерева - стандартного способа представления для программирования с экспрессией генов. Таким образом, хромосома состоит из четырех строк - линеаризованных Катуа-деревьев, для представления которых применяются описываемые ниже функции и терминалы.

Требования, предъявляемые к набору базовых функций, используемых при задании хромосомы, таковы: набор должен быть достаточно полным, чтобы выразить необходимые зависимости действий от позиции, и не слишком избыточным, чтобы работа генетического алгоритма была эффективной.

Предлагается использовать следующий набор базовых функций: +(х, у) = х + у,

++(х, у, 2) = х + у + 2, п(х) = -х, *(х, у) = ху, **(х, у, 2) = ху2, Ш1П, Л(X) =-,

1 + е х

I/>(х, у, 2, ц>) = х > у ? 2 : ц. Набор терминалов (координаты танка у), его энергия и т.д.) строится исходя из определения позиции (элемента множества 8'). Кроме того, этот набор необходимо дополнить некоторым множеством констант. В настоящей работе были выбраны следующие константы: 0, .5, 1, 2, 10.

В табл. 1 приведен пример сгенерированной хромосомы, а в табл. 2 -соответствующая этой хромосоме функция управления / = (/[, /2, /3, /4), представленная через базовые функции.

На рис. 4 приведен пример Катуа-дерева для функции/1 из табл. 3.

Таблица 1. Представление функции в виде хромосомы

/1 4 0 7 1 17 4 5 2 4 1 18 9 10 13 12 10 13 22 23 11 17 21 8 15 16 14 21 13 16 18 22 10 16 19 13 8 21 13 10 8 23

/2 6 4 5 8 0 2 7 0 5 0 20 15 8 19 19 18 8 11 15 16 13 22 23 22 12 20 22 19 13 19 23 15 15 22 11 22 11 14 8 17 23

/3 7 2 1 3 6 5 6 0 6 7 21 16 22 19 21 17 19 23 9 13 17 13 14 15 9 21 12 16 21 14 16 23 16 15 23 16 8 21 15 14 22

/4 2 4 5 0 2 7 1 3 4 1 19 8 15 17 17 9 18 13 13 18 18 21 17 17 17 15 8 9 18 22 17 23 19 21 10 10 11 20 13 19 23

Таблица 2. Функции, соответствующие хромосоме

Функция / = ^ ^ /4)

/1 = *^[п

/2 = ш1п

/3 0, = />

/4 .5 = +

Рис. 4. Ка/уа-дерево функции И из табл. 3

Функция приспособленности и критерий остановки процесса эволюции

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

Для того чтобы уравнять шансы соперников, выбор начальных положений танков производится следующим образом. Создается случайный набор пар координат ((х1, у1), (х2, у2)). После этого для каждой из них проводится два поединка, в первом из которых танк соперника имеет начальные координаты (х1, у1), а во втором - (х2, у2). Обозначим

число очков, набранных нашим танком в бою (состоящим из 20 раундов) как л, а число очков, набранных его соперником, как ле. При этом приспособленность танка будем

л

вычислять следующим образом: / = 100-.

Л + Ле

Процесс эволюции продолжается до тех пор, пока максимальное значение функции приспособленности для элементов популяции не превзойдет некоторого порогового значения. Например, пороговое значение, равное 70, означает, что танк в среднем «научился» побеждать своего соперника. При этом отметим, что значение функции приспособленности, равное 50, означает, что наилучший из танков текущей популяции в ходе двадцати раундов при случайном начальном положении танков, выигрывает половину раундов.

Генетические операции

Для реализации генетического алгоритма в данной работе используются стандартные генетические операции: отбор, мутация и скрещивание. Отбор осуществляется по методу рулетки. Скрещивание хромосом (как наборов из четырех строк, например, приведенных в табл. 2) производится поэлементно. При этом для каждой пары строк с вероятностью р в качестве /-го элемента результатом скрещивания выбирается 1-й элемент либо первой, либо второй хромосомы, а с вероятностью (1 - р) скрещивание производится стандартным образом с использованием метода битовой маски. Аналогично скрещиванию, мутация выполняется поэлементно. При этом каждый из символов строки с некоторой вероятностью заменяется некоторым другим. Более подробное описание указанных операций приведено в работе [2].

Эксперименты

При реализации генетического алгоритма число особей в популяции было выбрано равным 50. Один шаг эволюции (скрещивание, мутация, отбор, вычисление функции приспособленности) в популяции такого размера выполняется около пяти минут на компьютере Intel Pentium M 1.86 GHz. При этом практически все время тратится на вычисление функции приспособленности. Данное обстоятельство не позволяет использовать популяции больших размеров. Так, например, даже при указанном числе особей время работы генетического алгоритма может занимать несколько часов.

На рис. 5 приведен пример графика, иллюстрирующего работу генетического алгоритма для генерации танка против соперника sample.Walls. По оси абсцисс отложен номер поколения, а по оси ординат - значение функции приспособленности (Max -максимальное значение среди особей популяции, а Avg - среднее значение). Из рассмотрения графика максимального значения функции приспособленности (Max) следует, что уже на 11-ом поколении эволюцию можно было остановить, так как максимальное значение функции приспособленности превысило пороговое значение 70. Однако процесс был остановлен после 23-го поколения, так как значение функции приспособленности перестало изменяться существенно.

Таким образом, в результате сражений с одним из танков тестового набора строится каждый танк. В табл. 3 приведены описания систем управления, которые сгенерированы в ходе сражений с танками соперников newCynic.Cynical и sample.Walls. Эти танки использовались и в сражениях, результаты которых перечислены в табл. 4, так как указанные танки являются наиболее сильными в тестовом наборе. После генерации каждого танка, для оценки его эффективности были проведены бои с тем же соперником,

против которого он выводился. Бои состояли из 100 раундов. В табл. 4 приведены результаты этих боев. В этой таблице в столбце «Счет» первое значение - число очков, набранных нашим танком, а второе - танком соперника. В общем случае, как отмечалось выше, увеличение числа раундов приводит к более объективным результатам.

90 -л

80

10

0 п—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—I—

1 3 5 7 9 11 13 15 17 19 21 23

Поколение

Рис. 5. Процесс эволюционного построения танка

Таблица 3. Представление функции управления сгенерированных танков

Соперник Описание функции

new- Cynic. Cynical 0 2 1 6 3 6 0 6 13 19 14 13 23 10 28 18 13 17 18 13 19 14 17 23 15 13 18 9 29 30 15 14 13

0 7 2 0 4 6 1 7 9 22 23 11 23 22 16 23 18 27 10 22 27 16 9 13 15 21 24 29 14 17 16 20 23

3 4 8 1 6 0 0 5 14 17 21 24 21 17 19 11 19 11 24 18 28 23 23 15 10 24 16 22 14 30 26 14 15

7 3 3 1 8 0 1 2 18 23 29 15 26 29 16 25 30 25 16 23 26 26 27 17 18 26 19 25 15 10 19 28 20

sample. Walls 7 0 6 8 2 3 8 6 0 5 23 13 18 9 12 20 23 14 20 27 29 12 14 26 14 10 13 26 10 17 22 26 21 18 14 30 14 21 20 23 9

4 4 4 4 1 6 1 2 2 2 9 22 19 19 29 25 21 26 17 17 14 27 13 14 21 16 22 30 23 21 29 14 21 19 15 9 9 19 22 9 20

24 0 3 2 1 5 7 1 2 1 16 11 21 15 25 18 25 30 18 17 21 9 25 19 26 10 28 28 13 12 11 28 28 18 14 14 14 26 11 30 28

2 5 6 6 5 13 6 5 8 12 23 11 28 22 21 14 16 15 21 15 29 29 19 23 14 20 24 27 14 14 22 26 26 10 12 26 15 28 10 15 22

Таблица 4. Результаты поединков

Соперник Счет

newCynic.Cynical 10933 : 8108

sample.Walls 9559 : 7240

sample.SpinBot 11414 8556

sample.MyFirstRobot 11964 5346

sample.Corners 18086 2971

sample.Crazy 10797 4278

sam.ple.Fire 17610 5500

sample.Tracker 18642 4844

sample.TrackFire 16269 9851

sample.Target 17968 : 5

sample.RamFire 18572 : 3089

Автоматный подход

Эвристическое построение автоматов, управляющих танком, применялось в работе [4, 5]. В то же время попыток автоматически построить автоматы для управления танком ранее не предпринималось.

В рассмотренном выше подходе управление танком в любой момент времени осуществляется единственной функцией / : Б' ^ А'. При использовании автоматов эта функция декомпозируется с помощью состояний следующим образом. В каждом состоянии автомата определим функцию / : Б' ^ А', где / - номер рассматриваемого состояния. Для каждой пары различных состояний с номерами (/, у) зададим функцию перехода /у : 8 ' ^ Я . Построение функций переходов выполняется с помощью генетических алгоритмов, также как это делается для компонент функции управления. При этом, функции представляются в виде Катуа-деревьев.

Выделим начальное состояние. Далее в каждый момент времени, находясь в состоянии /, последовательно выполняются следующие действия:

• вычисляются значения функций / для всех у, / ^ у . Как только одно из вычисленных значений оказывается больше нуля (/ > 0), выполняется переход в состояние у. Если же все / < 0 , то состояние не изменяется;

• определяется значение функции управления , и выполняется действие, соответствующее найденному значению.

Для представления автомата в виде особи генетического алгоритма предлагается хранить в хромосоме (по аналогии с подходом, описанным выше) 4 * N + N * ^ - 1) функций, где N - число состояний автомата. Скрещивание, мутация и отбор выполняются таким же образом, как и ранее. На рис. 6 приведен пример автомата с тремя состояниями, управляющего танком. Табл. 5 иллюстрирует процесс эволюционного построения танка с автоматной структурой. Эволюция была остановлена на 36-ом поколении, так как рост максимального значения функции приспособленности практически остановился.

В табл. 6 приведен пример описания автомата из двух состояний в виде особи генетического алгоритма. Это описание содержит десять строк: восемь (/1 - /8) определяются состояниями и две /9, /10) - переходами. Данный автомат выводился в результате боев с танком sample.Walls.

Рис. 6. Автомат управления танком

Таблица 5. Работа генетического алгоритма

Номер поколения Максимальное значение функции приспособленности Среднее значение функции приспособленности Время, с

0 31.15 15.70 122

1 36.71 26.42 138

2 34.93 28.91 152

3 40.30 32.96 168

9 52.25 43.74 261

10 55.53 41.15 358

21 64.49 59.14 599

22 69.44 60.18 606

23 91.38 62.55 631

24 89.45 72.68 621

36 93.73 91.48 778

Таблица 6. Представление функции управления сгенерированных танков

/1 5 2 2 5 6 7 6 1 4 4 8 20 9 8 12 23 22 22 16 13 14 10 12 9 14 16 9 18 11 11 23 23 19 18 23 13 15 16 16 22 14

/2 3 16 2 5 1 2 0 6 3 5 15 8 17 12 22 14 21 11 10 12 13 21 14 14 8 19 11 20 17 15 23 14 22 18 8 10 9 21 20 18 22

/3 3 7 14 3 7 5 4 16 4 1 17 16 9 20 16 22 12 10 17 9 11 8 19 19 16 12 11 8 15 20 9 23 20 19 18 10 19 21 13 10 18

/4 1 7 14 6 2 4 7 6 4 6 9 8 12 21 17 10 13 16 23 18 17 14 15 15 19 17 18 14 21 9 15 17 12 19 11 8 13 9 23 10 18

f5 4 0 7 1 17 4 5 2 4 1 18 9 10 13 12 10 13 22 23 11 17 21 8 15 16 14 21 13 16 18 22 10 16 19 13 8 21 13 10 8 23

f6 6 4 5 8 0 2 7 0 5 0 20 15 8 19 19 18 8 11 15 16 13 22 23 22 12 20 22 19 13 19 23 15 15 22 11 22 11 14 8 17 23

f7 7 2 1 3 6 5 6 0 6 7 21 16 22 19 21 17 19 23 9 13 17 13 14 15 9 21 12 16 21 14 16 23 16 15 23 16 8 21 15 14 22

f8 2 4 5 0 2 7 1 3 4 1 19 8 15 17 17 9 18 13 13 18 18 21 17 17 17 15 8 9 18 22 17 23 19 21 10 10 11 20 13 19 23

f9 20 6 4 3 5 5 3 0 6 2 11 8 22 15 15 19 23 14 20 10 23 17 18 20 17 13 11 20 20 14 18 15 11 10 12 11 8 8 13 21 12

f1 0 3 7 0 4 1 4 5 1 4 16 22 15 8 14 22 19 18 17 22 10 11 15 21 13 9 13 11 8 8 13 16 11 14 8 10 23 8 23 9 17 18

Сгенерированный танк в 1000 раундах побеждает танк соперника со счетом 180168 на 28278. Таким образом, в среднем наш танк побеждает противника с вероятностью около 86%. Это несколько меньше, чем полученное в табл. 5 максимальное значение функции приспособленности - 93.73. Данное обстоятельство объясняется тем, что результат боя из 20 раундов имеет большую погрешность из-за сравнительно небольшого числа экспериментов.

Применение автоматного подхода для описания поведения танка позволяет генерировать более сложные системы управления по сравнению с первым подходом, и, следовательно, создавать более сильные танки. Однако на практике полученные танки обладают примерно такой же эффективностью, что и танки, построенные без автоматов. Это, видимо, связано с тем, что пространство поиска (множество автоматов с фиксированным числом состояний) достаточно велико для того, чтобы была возможность генерировать «хорошие танки» за разумное время в условиях медленного вычисления функции приспособленности. Можно надеяться, что дальнейшая работа в этом направлении (например, ускорение вычисления функции приспособленности) позволит более эффективно использовать автоматный подход при построении танков с применением генетических алгоритмов.

Программная поддержка метода

Управление танком может осуществляться либо синхронно, либо асинхронно. В первом случае главный класс программы наследуется от библиотечного класса Robot, а во втором - от библиотечного класса AdvancedRobot [1]. В данной работе был выбран второй вариант. Таким образом, приведенный в приложении код, принадлежит классу, который наследуется от класса AdvancedRobot. Метод поддержан двумя типами программ. Первая из них на основе использования генетических алгоритмов строит символическое описание системы управления, пример которого приведен в табл. 2, а вторая - интерпретирует ее и управляет танком (приложение). Первая программа имеет две модификации, соответствующие традиционному и автоматному подходам, а вторая не зависит от используемого подхода и состоит из следующих основных компонентов:

• среда Robocode;

• система управления, которая по входным воздействиям, получаемым из среды, формирует выходные воздействия на объект управления;

• объект управления (танк), содержащий систему движения и пушку. Радар реализован тривиально, и поэтому в отдельный класс не выделен.

Эта программа является главной и содержит обращение к некоторым классам, исходный код которых не приведен в приложении. Обе программы написаны на языке Java.

Заключение

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

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

Литература

1. Официальный сайт игры Robocode. http://robocode.sourceforge.net/

2. Mitchell M. An Introduction to Genetic Algorithms. MA. The MIT Press. 199б.

3. Гладков Л.А., Курейчик В.В., Курейчик В.М. Генетические алгоритмы. - М.: Физ-матлит,200б.

4. Кузнецов Д.В., Шалыто А.А. Система управления танком для игры "Robocode". Вариант 2. - СПбГУ ИТМО. 2003. - Режим доступа: http://is.ifmo.ru/projects/robocode2/

5. Туккель Н.И., Шалыто А.А. Система управления танком для игры "Robocode". Вариант 1. Проектная документация. - СПбГУ ИТМО. 2003. - Режим доступа: http://is.ifmo.ru/projects/tanks/

6. Шалыто A.A. SWITCH-технология. Алгоритмизация и программирование задач. -СПб: Наука, 1998. - Режим доступа: http://is.ifmo.ru/books/switch/!

7. История игры Robocode. - Режим доступа: http://robowiki.net/cgi-bin/robowiki7History

8. Gade M., Knudsen M., et al. Applying Machine Learning to Robocode. 2003. - Режим доступа: www.csc.calpoly.edu/~teaml4fk/F04/dat3_report.pdf

9. Eisenstein J. Evolving robot tank fighters. Technical Report AIM-2003-023, AI Lab, MIT. 2003. - Режим доступа: http://www.ai.mit.edu/people/jacobe/research/robocode/genetic_tanks.pdf

10. Ferreira C. Gene Expression Programming: A New Adaptive Algorithm for Solving Proble ms // Complex Systems. - 2001. - V.13. - № 2. P. 87-129. - Режим доступа: www.gene-expression-programming.com/webpapers/GEP.pdf

11. Koza J.R. Genetic programming. On the Programming of Computers by Means of Natural Selection. - MA. The MIT Press. 1998.