Глава 2. Применение генетического программирования для

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ, МЕХАНИКИ И ОПТИКИ
Факультет___Информационных технологий и программирования________________
Направление Прикладная математика и информатика_____
Специализация Математические модели и алгоритмы в разработке программного
обеспечения
Академическая степень ___бакалавр прикладной математики и информатики___
Кафедра__Компьютерных технологий_________Группа_________4539____________
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К ВЫПУСКНОЙ КВАЛИФИКАЦИОННОЙ РАБОТЕ
__________________Применение генетического программирования для___________________
_________генерации автоматов управления роботами в игре «виртуальный футбол»_________
Автор квалификационной работы ____Кошевой_А.А.___________________(подпись)
( Фамилия, И., О. )
Научный руководитель____________Шалыто_А.А.______________________(подпись)
( Фамилия, И., О. )
Консультанты:
а) По экономике и организации производства ______________________________________________(подпись)
( Фамилия, И., О. )
б) По безопасности жизнедеятельности и экологии __________________________________________ (подпись)
( Фамилия, И., О. )
К защите допустить
Зав. кафедрой ____ВАСИЛЬЕВ В.Н.
___________________________(подпись)
( Фамилия, И., О. )
“____”____________________2009 г.
Санкт-Петербург, 2009 г.
ОГЛАВЛЕНИЕ
Оглавление ....................................................................................................... 1
Введение........................................................................................................... 3
Глава1. Постановка задачи............................................................................. 5
1.1. Формальная постановка задачи .......................................................... 5
1.2. Объекты игры «Виртуальный футбол» ............................................. 5
1.2. Физическая модель .............................................................................. 6
1.2.1. Физические характеристики объектов........................................ 6
1.2.2. Модель столкновений ................................................................... 7
1.2.3. Физические характеристики игроков ......................................... 7
1.3. Правила игры ........................................................................................ 7
1.3.1. Начало игры ................................................................................... 8
1.3.2. Разведение мяча ............................................................................ 8
1.3.2. Процесс игры ................................................................................. 8
1.3.3. Блокировка мяча ........................................................................... 8
1.3.4. Условие засчитывания гола ......................................................... 8
1.3.5. Конец игры .................................................................................... 9
1.4. Технология создания робота в среде «Виртуальный футбол» ........ 9
1.4.1. Управляющие алгоритмы в игре «Виртуальный футбол» ....... 9
1.4.2 Robot.java ........................................................................................ 9
1.4.3. StatusEvent.java ............................................................................ 10
Глава 2. Применение генетического программирования для построения
управляющих автоматов........................................................................................... 11
2.1. Эволюционные вычисления.............................................................. 11
1
2.1.1. Эволюционные алгоритмы ........................................................ 12
2.1.2. Генетические алгоритмы ............................................................ 13
2.1.3. Генетическое программирование .............................................. 15
2.2. Автоматы ............................................................................................ 15
2.2.1. Детерминированные конечные автоматы ................................ 16
2.2.2. Автоматы Милли ........................................................................ 16
2.2.3. Деревья решений ......................................................................... 16
2.2.4. Представление автоматов в виде деревьев решений .............. 16
2.3. Объект управления ............................................................................ 16
2.4. Управляющий автомат ...................................................................... 16
2
ВВЕДЕНИЕ
Эволюционные вычисления являются одним из активно развивающихся
и
перспективных
направлений
в
искусственном
интеллекте
и
программировании. Они доказали свою эффективность на практике при
решении широкого спектра сложных и интересных задач в различных областях.
К их числу относятся трудоемкие задачи оптимизации, аппроксимации,
интеллектуальной
обработки
данных,
трудноформализуемые
задачи
искусственного интеллекта, как то распознавание образов, кластеризация,
ассоциативный поиск и многие другие.
Программные и аппаратные системы часто имеют сложное поведение,
например,
устройства
управления,
сетевые
протоколы,
персонажи
компьютерных игр. Для их реализации данных систем применяется автоматный
подход. В соответствии с ним сущность системы представляется в виде
автоматизированного объекта – совокупности управляющего автомата и
объекта управления. Несмотря на то, что методика построения управляющих
автоматов довольно хорошо разработана, для некоторых задач эвристическое
потроение автомата или невозможно, или затруднительно. Кроме того, даже
для относительно простых задач часто возникает вопрос об оптимальности
спроектированного автомата. Одним из решений данной проблемы являются
методы
генетического
программирования,
являющихся
подклассом
упомянутых эволюционных вычислений.
В представленной работе методы генетического программирования
применяются для генерации автоматов управления виртуальными роботами в
игре для программистов «Виртуальный футбол». Эта игра была спроектирована
и реализована в рамках курсовой работы по предмету «Автоматное
программирование»
и
представляет
собой
платформу
для
разработки
алгоритмов управления в системе со сложным поведением. Существует
довольно большое число подобных платформ, но большинство из них обладают
3
существенным недостатком – длительным временем изучения системы и
высоким уровнем требуемых знаний в программировании, что означает
элитарность участников данных игр. В качестве же одной из целей создания
программной системы «Виртуальный футбол» ставилась простота и легкость
написания управляющих алгоритмов для роботов-игроков.
4
ГЛАВА1. ПОСТАНОВКА ЗАДАЧИ
1.1. Формальная постановка задачи
Игра для программистов «Виртуальный футбол» представляет собой
эмулятор виртуального мира, в котором две команды роботов соревнуются друг
с другом в мастерстве игры в футбол.
Команда, принимающая участие в игре, должна состоять из одного или
нескольких игроков, каждый из которых является программой управления
роботом на языке программирования Java. В нашем случае каждая команда
будет состоять ровно из одного игрока.
Эмулятор игры поставляется в виде отдельной программы, для запуска
которой необходимо наличие на компьютере пользователя установленной JRE
(Java Runtime Environment) версии не ниже 1.5. После создания, команда
роботов помещается на виртуальное футбольное поле, на котором им предстоит
встретиться с другой командой, подобных им роботов. Процесс игры
соперников друг против друга можно наблюдать с помощью того же эмулятора.
1.2. Объекты игры «Виртуальный футбол»
Процесс игры в «Виртуальный футбол» проходит на двумерны
прямоугольном поле, периметр которого ограничен жесткими стенками. С
левой и правой стороны его расположены ворота. В середине поля размечен
центральный круг. На рисунке 1 представлена подробная схема игрового поля.
5
Рис. 1. Схема игрового поля
Динамическими объектами игры являются игроки и мяч. Игроки и мяч
представляют собой объекты цилиндрической формы. Игроки делятся на две
команды, каждая из которых стремится защитить свои ворота и забить гол в
чужие.
1.2. Физическая модель
Модель игры «Виртуальный футбол» является упрощенной физической
моделью игры роботов цилиндрической формы на плоском прямоугольном
поле с воротами, ограниченным жесткими бортами.
1.2.1. Физические характеристики объектов
Каждый динамический объект в любой момент игры обладает такими
физическими характеристиками как положение и скорость. Игроки также
обладают ускорением, максимальной развиваемой скоростью и максимальной
угловой скоростью, учитываемой при совершении поворота. Введение этих
ограничений обеспечивает приближение физической модели игры к жизни.
Также игроки и мяч обладают собственной массой, которая влияет на
траекторию движения, изменяющуюся в результате столкновения данных
объектов.
6
1.2.2. Модель столкновений
Столкновение мяча и игроков обрабатываются как абсолютно упругие
столкновения объектов круглой формы. Потерь энергии при столкновении не
происходит. Это означает, что суммы энергий объектов в момент до
столкновения и в момент сразу после столкновения равны.
После соударения мяча или игрока со стенкой скорость движения
первого сохраняется, а направление движения изменяется по правилу «угол
падения равен углу отражения». Угол падения в данном случае является углом
между скоростью движения объекта и плоскостью стенки в момент соударения.
Рисунок 2 иллюстрирует данный случай. Пунктирная стрелка здесь –это
вектор скорости объекта непосредственно до момента столкновения, сплошная
– новый вектор скорости сразу после.
Рис. 2. Соударение объекта со стенкой
1.2.3. Физические характеристики игроков
Как было упомянуто ранее, игроки обладают заданным ускорением.
Практически это означает, что игрок не может изменить свою скорость в
заданный промежуток времени на значение, по абсолютной величине
превышающее заданную константу для игры. Также игрок не может изменить
угол направления движения на величину, большую заданной.
1.3. Правила игры
При разработке правил игры в «Виртуальный футбол» был сделан
акцент на простоте реализации и
7
1.3.1. Начало игры
Игра начинается с разведения мяча в середине поля. Первый игрок
команды, защищающей левые ворота является разводящим в данном случае.
1.3.2. Разведение мяча
Мяч помещается в центральную точку поля. Разводящий игрок
находится в случайной точке центрального круга, в его половине, ближайшей к
обороняемым воротам. Остальные игроки обеих команд находятся каждый на
своей половине поля, не включая зону центрального круга. Положения игроков
случайны, а распределение по области, разрешенной для нахождения в момент
вбрасывания, является равномерным по ней.
1.3.2. Процесс игры
Игрокам разрешены любые столкновения как с мячом, так и с
противником.
1.3.3. Блокировка мяча
В процессе игры, в следствие работы алгоритма роботов, может
возникнуть такая ситуация, что мяч будет заблокирован одним или
несколькими игроками в углу, или у ограничительной стенки поля. В данном
случае производится принудительное разведение мяча в середине поля.
Разводящая команда не меняется с момента последнего разведения.
1.3.4. Условие засчитывания гола
При касании мячом левого или правого края поля в том месте, где
расположены ворота, команде, защищающей их, засчитывается пропущенный
мяч. Команде-противнику в этом случае прибавляется одно очко к счету. После
этого происходит разведение мяча игроком, представляющей команду,
пропустившую мяч.
8
1.3.5. Конец игры
Конец игры наступает по окончанию отведенного для нее времени. Этот
параметр является изменяемым значением игры и задается до ее начала.
1.4. Технология создания робота в среде «Виртуальный футбол»
1.4.1. Управляющие алгоритмы в игре «Виртуальный футбол»
Каждый алгоритм, управляющий роботом в игре «Виртуальный футбол»
является скомпилированной java-программой. Class-файлы данной программы
должны быть помещены в отдельный jar-архив, который может быть загружен
в игру с помощью диалога формирования команд (рисунок 2).
1.4.2 Robot.java
Для каждого управляющего алгоритма требуется наличие главного javaкласса, который должен наследоваться от абстрактного класса Robot,
предоставляющего
основное
API
(API
–
сокращение
от
«application
programming interface» – программный интерфейс приложения) управления
роботом во время игры. Полное имя данного класса должно быть задано в
манифесте (манифест – специальный файл с именем MANIFEST.MF,
находящийся в jar-архиве, в каталоге META-INF) jar-архива под заголовком с
именем Robot-class.
Класс Robot предоставляет следующие функции управления роботомфутболистом:
 void setSpeed(double);
 void setTurnAngleLeft(double);
 void setTurnAngleRight(double);
 void setSpeedVector(Vector).
Первый метод позволяет задать желаемую скорость движения робота.
Реальная скорость движения может отличаться после вызова этого метода из-за
наличия ускорения и ограничения скорости движения робота.
9
Второй и третий методы позволяют изменить угол направления
движения, совершая, соответственно, поворот налево или направо. Данные
методы учитывают ограничения, накладываемые на изменение угла, а именно
максимальную угловую скорость. Если аргумент метода превосходит эту
величину, то происходит изменение угла на максимальную угловую скорость.
Последний метод объединяет в себе функциональность первых двух и
обеспечивающую простоту задания скорости игрока. Данный метод все так же
учитывает ограничения, накладываемые на скорость и угол поворота объекта и
описанные выше.
Данный набор методов позволяет полностью контролировать поведение
робота в рамках игры «Виртуальный футбол».
1.4.3. StatusEvent.java
Каждый временной тик игры (наименьший временной отрезок игры) для
всех роботов вызывается метод void onStatus(StatusEvent). Переопределение
данного метода создателем робота задает алгоритм управления в процессе
игры. Его единственный аргумент содержит в себе всю необходимую
информацию об окружающей среде на момент вызова данного метода. Класс
StatusEvent предоставляет пользователю следующий набор методов:
 BallInfo getBallInfo();
 FieldInfo getFieldInfo();
 GameStatistics getGameStatistics();
 PlayerInfo getMyInfo();
 List<PlayerInfo> getOthersInfo().
С помощью них игрок может получить отчет об игровой ситуации,
включающий в себя положения и скорости всех игроков и мяча, их линейные
размеры, конфигурацию игрового поля и текущий счет. Игровое поле
характеризуется
линейными
размерами,
центрального круга.
10
шириной
ворот
и
радиусом
ГЛАВА 2. ПРИМЕНЕНИЕ ГЕНЕТИЧЕСКОГО
ПРОГРАММИРОВАНИЯ ДЛЯ ПОСТРОЕНИЯ
УПРАВЛЯЮЩИХ АВТОМАТОВ
2.1. Эволюционные вычисления
Эволюционные вычисления – это термин, используемый для общего
описания алгоритмов поиска, оптимизации или обучения, базирующихся на
некоторых
формализованных
принципах
естественного
эволюционного
процесса.
История эволюционных вычислений началась с разработки ряда…
Суть эволюционного процесса заключается в развитии популяции
особей, целью которого является максимизация их приспособленности.
Ключевую роль здесь играет принцип естественного отбора, следуя которому
наиболее приспособленные особи лучше выживают и приносят больше
потомства, чем менее приспособленные. Каждая особь, участвующая в
естественном отборе, характеризуется определенным набором хромосом…
Второй важный фактор, влияющий на наследственность, – это мутации.
Они выражаются в изменении гена особи посредством замещения некоторых из
хромосом, входящих в его набор. Мутации случайны и могут быть вызваны
различными внешними факторами. Результат каждой мутации может быть как
положительным, так и негативным, проявляясь либо в виде новых свойств
потомков, либо в их наследственной болезни.
Таким образом, эволюция – это процесс постоянной оптимизации
приспособленности популяции. Естественный отбор здесь гарантирует, что
наиболее приспособленные особи дадут достаточно большое потомство, а
благодаря генетическому наследованию, который включает в себя возможность
мутации,
часть
этого
потомства
не
только
сохранит
высокую
приспособленность родителей, но будет обладать и некоторыми новыми
свойствами.
11
2.1.1. Эволюционные алгоритмы
Эволюционные вычисления включают в себя подкласс эволюционных
алгоритмов.
Каждому
индивиду
(особи)
сопоставляется
значение
его
пригодности к окружающей среде. Данное значение определяется целевой
функцией, задаваемой окружающей средой. Если поиск оптимума ведется в
пространстве гипотез 𝑋, тогда целевая функция 𝑓: 𝑋 → 𝑅 называется функцией
приспособленности
или
фитнес-функцией.
Она
должна
принимать
неотрицательные значения на ограниченной области определения (для того,
чтобы можно было для каждой особи считать ее приспособленность, которая не
может быть отрицательной), при этом не требуются непрерывность и
дифференцируемость.
Отличительная особенность эволюционных алгоритмов – использование
операции кроссовера, аналогичного скрещиванию индивидов в эволюции
живых существ. Операция кроссовера применяется к нескольким особям
популяции и в результате применения порождает одну. Как правило,
количество требуемых кроссовером особей равно двум. В дальнейшем
рассматриваются операции скрещивания только такого вида.
Схема работы эволюционного алгоритма представлена на рисунке 2.
Первый шаг – это генерация начальной популяции особей, т.е. некоторого
набора решений задачи. Обычно это происходит случайным образом. Затем
начинается моделирование эволюционного процесса, который можно разделить
на три основных этапа:
 селекция особей, имеющих наибольшее значение функции
приспособленности;
 применение операции кроссовера к отобраным индивидам;
 мутации некоторых особей популяции.
Данный процесс продолжается несколько жизненных циклов, пока не
будет выполнен критерий остановки алгоритма. Таким критерием может быть:
 нахождение глобального, либо локального решения задачи;
12
 исчерпание числа поколений, отпущенных на эволюцию;
 исчерпание времени, отпущенного на эволюцию.
Создание начальной
популяции
Отбор
Размножение
к новому поколению
Мутации
критерий остановки
Ответ
Рис. 3. Принципиальная схема работы эволюционного
алгоритма
2.1.2. Генетические алгоритмы
В 1975 г. вышла основополагающая книга Дж.Холланда «Адаптация в
естественных и искусственных системах», в которой был предложен
генетический алгоритм, исследованный в дальнейшем учениками и коллегами
Дж.Холланда в Мичиганском университете. В этой работе ученый впервые ввел
термин
«генетический
алгоритм»
и
предложил
схему
классического
генетического алгоритма (canonical GA).
Классический генетический алгоритм оперирует совокупностью особей,
которые представляют собой строки, кодирующие одно из решений задачи.
Рассмотрим
три
стадии
эволюционного
алгоритма
в
применении
к
генетическим алгоритмам.
Первая стадия генетического алгоритма представляет собой отбор
особей, составляющих промежуточную популяцию. В этой популяции
13
находятся особи, используемые для размножения. Наиболее приспособленные
из них могут быть представлены в промежуточной популяции несколько раз, в
то время как наименее приспособленные имеют небольшую вероятность
попасть в нее. В классическом генетическом алгоритме вероятность каждой
особи
попасть
в
приспособленности.
промежуточную
Такой
метод
популяцию
селекции
пропорциональна
особей
ее
называется
пропорциональным отбором. Существуют, однако, и другие стратегии отбора,
применяемые на практике. При использовании ранкового отбора, вероятность
каждой особи попасть в промежуточную популяцию пропорциональна ее
порядковому номеру в отсортированной по возрастанию приспособленности
популяции. Такой вид отбора не зависит от средней приспособленности
популяции. Суть турнирного отбора заключается в случайном выборе t особей,
лучшая из которых помещается в промежуточную популяцию. Этот процесс
продолжается до тех пор, пока промежуточная популяция не будет полностью
заполнена.
В
процессе
отбора
усечением
популяция
сортируется
по
приспособленности, после чего берется заданная доля лучших и из них
необходимое число раз случайным образом выбирается особь для дальнейшего
развития.
На второй стадии особи промежуточной популяции случайным образом
разбиваются на пары, затем с некоторой вероятностью скрещиваются, в
результате чего получаются два потомка, которые записываются в новое
поколение. В том случае, если скрещивания не происходит, то в новое
поколение записывается сама пара. Существует несколько основных видов
операторов кроссовера. В классическом генетическом алгоритме применяется
одноточечный оператор кроссовера. Наряду с ним существуют двухточечный и
однородный кроссоверы. Выбор оператора кроссовера следует совершать
исходя из условий решаемой задачи.
Третья стадия – это мутация некоторых особей популяции. Он состоит в
применении к полученному в результате отбора и скрещивания новому
14
поколению оператора мутации. Этот шаг необходим для предотвращения
попадания популяции в зону локального экстремума и способствующий защите
от преждевременной сходимости. В процессе мутации каждый бит каждой
особи популяции с некоторой вероятностью инвертируется. Эта вероятность
обычно мала, в большинстве случаев значение ее менее 1%.
После скрещивания и мутации наступает стадия формирования нового
поколения. Есть два основных подхода к реализации данной стадии. Первый
заключается в замещении детьми родителей в новом поколении. Второй – в
формировании нового поколения из совокупности детей и их родителей. Также
зачастую применяется принцип элитизма. Исходя из него в новое поколение
включается заданное количество особей предыдущего поколения (часто одна
лучшая особь). Использование второй стратегии и элитизма не допускает
потери лучших решений.
Процесс эволюции в генетическом алгоритме заканчивается по
достижению выполнения критерия останова. Им может служить заданное
количество поколений, отведенное время на эволюцию или схождение
популяции. Схождением называется состояние популяции, когда все строки,
представляющие
особей
популяции,
находятся
в
области
некоторого
экстремума и почти одинаковы. В данной ситуации кроссовер незначительным
образом изменяет популяции, а особи подверженные мутации склонны
вымирать как менее приспособленные. Таким образом, схождение популяции
означает, что достигнуто решение близкое к оптимальному.
Итоговым решением задачи может служить наиболее приспособленная
особь последнего поколения.
2.1.3. Генетическое программирование
2.2. Автоматы
15
2.2.1. Детерминированные конечные автоматы
2.2.2. Автоматы Милли
2.2.3. Деревья решений
2.2.4. Представление автоматов в виде деревьев решений
2.3. Объект управления
Объектом управления в игре «Виртуальный футбол» является роботфутболист. Для возможности его использования некоторым управляющим
алгоритмом в методе генетического программирования необходимо определить
множество предикатов, отображающих вычислительные состояния робота в
логические значения, и множество действий, позволяющих изменять его
вычислительное состояние. Вычислительным состоянием в нашем случае
является игровая ситуация в конкретный временной тик.
Прежде чем переходить к заданию множества предикатов, следует
сделать несколько наблюдений о самом процессе игры.
2.4. Управляющий автомат
16
Download