Научная статья на тему 'Примение генетических алгоритмов для построения автоматов Мура и систем взаимодействующих автоматов Мили на примере задачи об «Умном муравье»'

Примение генетических алгоритмов для построения автоматов Мура и систем взаимодействующих автоматов Мили на примере задачи об «Умном муравье» Текст научной статьи по специальности «Математика»

CC BY
544
159
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГЕНЕТИЧЕСКИЕ АЛГОРИТМЫ / GENETIC ALGORITHM / АВТОМАТ МУРА / АВТОМАТ МИЛИ / АВТОМАТНОЕ ПРОГРАММИРОВАНИЕ / AUTOMATA-BASED PROGRAMMING / MOORE FINITE STATE MACHINE / MEALY FINITE STATE MACHINE

Аннотация научной статьи по математике, автор научной работы — Давыдов А. А., Соколов Д. О., Царев Ф. Н.

В работе предлагается генетический алгоритм, осуществляющий построение конечных автоматов Мура. Аналогичный алгоритм предлагается применять и для построения систем взаимодействующих автоматов Мили. Для указанных типов автоматов разработаны генетические операции скрещивания и мутации. Реализация генетических алгоритмов выполнена на языке программирования Java. Применение этих алгоритмов иллюстрируется на примере задачи об «Умном муравье»

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Application of genetic algortihms for Moore automata and systems of Mealy automata construction in Artificial ant problem

A genetic algorithm for constructing Moore finite state machines is proposed in this paper. The same algorithm can be used for constructing systems of interaction Mealy finite state machines. For these types of automata genetic operations of mutation and cross-over were developed. Genetic algorithms are implemented with Java programming language. Application of these algorithms is illustrated on the example of Artificial Ant problem.

Текст научной работы на тему «Примение генетических алгоритмов для построения автоматов Мура и систем взаимодействующих автоматов Мили на примере задачи об «Умном муравье»»

УДК 004.4'242

ПРИМЕНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ ДЛЯ ПОСТРОЕНИЯ АВТОМАТОВ МУРА И СИСТЕМ ВЗАИМОДЕЙСТВУЮЩИХ АВТОМАТОВ МИЛИ НА ПРИМЕРЕ ЗАДАЧИ ОБ «УМНОМ

МУРАВЬЕ» А.А. Давыдов, Д.О. Соколов, Ф.Н. Царев

(Санкт-Петербургский государственный университет информационных технологий, механики и оптики)

В работе предлагается генетический алгоритм, осуществляющий построение конечных автоматов Мура. Аналогичный алгоритм предлагается применять и для построения систем взаимодействующих автоматов Мили. Для указанных типов автоматов разработаны генетические операции скрещивания и мутации. Реализация генетических алгоритмов выполнена на языке программирования Java. Применение этих алгоритмов иллюстрируется на примере задачи об «Умном муравье»

Ключевые слова: генетические алгоритмы, автомат Мура, автомат Мили, автоматное программирование

Введение

В последнее время все чаще применяется автоматное программирование [1], в рамках которого поведение программ описывается с помощью конечных детерминированных автоматов. В ряде задач автомат удается построить эвристическими методами, однако часто такое построение требует больших затрат времени. В ряде случаев автоматы эвристически и вовсе не построить. Примером такой задачи является задача об «Умном муравье» [2]. Даже для этой относительно простой задачи полный перебор крайне трудоемок. Поэтому для построения автоматов в задачах такого рода целесообразно применять генетические алгоритмы [2-9].

Все известные авторам работы в этой области [10] посвящены построению одного автомата Мили. Однако в автоматном программировании допускается использование автоматов Мура и систем взаимодействующих автоматов [1]. При этом отметим, что одним из основных способов взаимодействия автоматов является их вложенность. Целью настоящей работы является построение с помощью генетического программирования [7] пары вложенных автоматов Мили и автомата Мура для задачи об «Умном муравье».

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

Ниже приведено описание рассматриваемой задачи [2]. Игра происходит на поверхности тора размером 32*32 клетки (рис. 1).

Рис. 1. Игровое поле

В некоторых клетках находится еда (на рисунке эти клетки обозначены черным цветом). Муравей начинает движение из клетки, помеченной меткой Start. За ход муравей может выполнить следующие действия:

• повернуть налево;

• повернуть направо;

• сделать шаг вперед, и если в новой клетке есть еда, то съесть ее;

• ничего не делать.

Игра длится 200 шагов. Цель игры - создать муравья «с минимальным числом состояний», который за минимальное число шагов съест как можно больше яблок.

Ранее эта задача была решена [3] при помощи автомата Мили без использования взаимодействующих автоматов. Для построения таких автоматов в работе [8] применялись генетические алгоритмы. В настоящей работе рассматриваемая задача решается сначала с помощью системы из двух автоматов Мили, взаимодействующих за счет вложенности, а затем - с помощью автомата Мура.

Алгоритм генетического программирования

Для генерации пары вложенных автоматов Мили и автомата Мура предлагается использовать один и тот же островной генетический алгоритм [5, 9], но с различными структурами хромосом, операторами мутации и скрещивания и функциями приспособленности. Отметим, что при необходимости этот алгоритм может быть адаптирован и для других типов систем автоматов.

В первом случае особь представляется собой пару вложенных автоматов Мили, один из которых будем называть внешним, а другой - внутренним. Хромосома особи состоит из описаний двух автоматов, каждое из которых содержит номер начального состояния и описания каждого состояния.

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

Во втором случае особь представляет собой автомат Мура. Хромосома особи состоит из номера начального состояния и описания каждого состояния. Описание состояния содержит действие, выполняемое при переходе в состояние, и описание двух переходов - перед муравьем есть еда, и ее нет. Описание перехода состоит из номера состояния, в которое он ведет. Хромосома не кодируется битовой строкой, как это делается традиционно, а представляет собой объект на языке Java вида

class Automaton { int initialState; Transition[][] transition;

char[] stateAction[]; // только для автоматов Мура Automaton nestedAutomaton;

}

Островной алгоритм традиционно состоит из следующих этапов:

• создание начального поколения;

• мутация;

• скрещивание (кроссовер);

• вычисление функции приспособленности (фитнесс-функции);

• обмен особями между островами;

• отбор особей для формирования следующего поколения.

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

Создание начального поколения

Все острова заполняются случайно сгенерированными автоматами. Все автоматы имеют заранее заданное число состояний.

Мутация (малая или мутация особи)

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

• случайное изменение стартового состояния особи;

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

• удаление (добавление) случайного перехода для внешнего автомата;

• изменение действия на случайном переходе;

• мутация вложенного автомата.

Для автоматов Мура применяется аналогичный оператор мутации:

• случайное изменение стартового состояния особи;

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

• изменение действия в случайном состоянии.

Каждый из перечисленных действий выполняется с некоторой априори заданной вероятностью.

Мутация (большая или мутация острова)

Через заранее заданное число поколений фиксированная доля островов заменяется островами со случайными особями. Проведение мутации в момент, когда функция приспособленности (имеются в виду только элитные особи) изменяется незначительно, невозможно, так как за счет миграции особей между островами фитнесс-функция постоянно изменяет свое значение.

Скрещивание

Оператор скрещивания получает на вход две особи и выдает две особи (потомки входных особей). Оператор скрещивания пары вложенных автоматов аналогичен описанному в работе [8]. Вложенные автоматы равновероятно либо скрещиваются, либо один ребенок наследует вложенный автомат одного родителя, а другой - другого.

Оператор скрещивания автоматов Мура также аналогичен описанному в работе [8], но имеет особенность в связи с наличием действия в состоянии. Обозначим родительские особи - Р1 и Р2, а детей - 81 и 82. Обозначим действие в к-ом состоянии автомата А как А.а[к]. Тогда для любого к будет верно одно из следующих утверждений:

• Б1.а[к] = Р1.а[к], Б2.а[к] = Р2.а[к];

• Б1.а[к] = Р2.а[к], Б2.а[к] = Р1.а[к];

Оба этих варианта равновероятны.

Вычисление функции приспособленности

В настоящей работе для генерации автоматов Мура применяется функция приспособленности вида Т

Р ——, 200

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

^ —— + С ■ I, 200

где ^ - количество съеденной еды, Т - номер последнего хода, на котором муравей съел еду, I - число посещенных состояний у внешнего автомата, С - некоторый коэффициент. Подбор коэффициента С является ключевым при генерации средствами генетического программирования систем автоматов, взаимодействующих за счет вложенности автоматов.

Формирование следующего поколения

В качестве основной стратегии формирования следующего поколения используется элитизм [11]. При рассмотрении текущего поколения отбрасываются все особи, кроме некоторой доли наиболее приспособленных - элиты. Эти особи переходят в следующее поколение. После этого оно дополняется в определенной пропорции случайными особями, мутировавшими особями из текущего поколения и результатами скрещивания особей из текущего поколения. Особи, «имеющие право» давать потомство, определяются «в поединке»: выбираются две случайные пары особей, и более приспособленная в каждой паре становится одним из родителей. Эта эволюция происходит независимо на каждом из островов.

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

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

Настраиваемые параметры генетического алгоритма

Алгоритм имеет следующие настраиваемые параметры:

• число островов;

• размер поколения на одном острове;

• число поколений между большими мутациями;

• доля уничтожаемых островов во время большой мутации;

• процент элиты;

• число поколений между обменом особями между островами;

• число обмениваемых особей;

• параметры малой мутации;

• параметры скрещивания;

• отношение «мутантов», случайных особей и детей особей из текущего поколения при формировании следующего поколения;

• С - коэффициент влияния внешнего автомата.

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

Результаты

С помощью разработанного алгоритма построен автомат Мура с 10 состояниями, который позволяет муравью съесть всю еду за 198 шагов (рис. 2).

Рис. 2. Автомат, позволяющий муравью съесть всю еду за 198 шагов

Поясним условные обозначения на рис. 2. Пометки на вершинах имеют вид: номер / действие. Действия обозначаются следующим образом:

• Ь - поворот налево;

• Я - поворот направо;

• М - сделать шаг, и если в новой клетке есть еда, то съесть ее.

Условия на переходах обозначаются следующим образом:

• Т - перед муравьем есть еда;

• Б - перед муравье нет еды.

Стартовое состояние отмечено внешней стрелкой. Лучшим достигнутым авторами результатом для девяти состояний является автомат, который позволяет муравью съесть 86 единиц еды также за 198 ходов.

Для взаимодействующих автоматов Мили не удалось построить пару, которая позволяет муравью съесть всю еду, и каждый автомат из которой имеет меньше семи состояний, как это имеет место в случае использования одного автомата Мили [8].

Лучшей построенной авторами системой является система автоматов (4, 6) (четыре состояния во внешнем автомате, шесть - во внутреннем), позволяющая муравью съесть 87 единиц еды за 185 ходов (рис. 3). Данный результат был получен при значении параметра C = 0.01. Из изложенного можно сделать вывод о том, что автомат, получаемый в результате решения задачи о муравье, не декомпозируем либо плохо декомпозируем.

Поясним условные обозначения на рис. 3. Пометки на вершинах имеют вид: номер, а на переходах: условие / действие. Условия, действия и стартовые состояния обозначаем так же, как и на рис. 2.

Внешний автомат Внутренний автомат

Рис. 3. Пример системы взаимодействующих автоматов Мили

Заключение

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

В дальнейшем возможно применение сокращенных таблиц [10], что должно позволить использовать предложенный алгоритм для решения задач с большим числом входных переменных.

Литература

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

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

2. Jefferson D., Collins R., Cooper C., Dyer M., Flowers M., Korf R., Taylor C., Wang A. The Genesys System. 1992. - Режим доступа: www.cs.ucla.edu/~dyer/Papers/AlifeTracker/Alife91Jefferson.html

3. Angeline P., Pollack J. Evolutionary Module Acquisition / Proceedings of the Second Annual Conference on Evolutionary Programming. 1993. - Режим доступа: http://www.demo.cs.brandeis.edu/papers/ep93.pdf

4. Chambers L. Practical Handbook of Genetic Algorithms. Complex Coding Systems. Volume III. CRC Press, 1999. - Режим доступа:

http://www.eknigu.com/info/Cs_Computer%20science/CsGn_Genetic,%20neural/Chambers %20D.L.%20(ed.)%20Vol.%203.%20Handbook%20of%20genetic%20algorithms.%20Com plex%20coding%20systems%20(CRC,%201999)(ISBN%200849325390)(T)(659s).djvu

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

6. Рассел С., Норвиг П. Искусственный интеллект: современный подход. - М.: Виль-ямс, 2006.

7. Koza J. R. Genetic programming: on the programming of computers by means of natural selection. МА: MIT Press, 1992. - Режим доступа:

http://www.eknigu.com/info/Cs_Computer%20science/CsGn_Genetic,%20neural/Koza%20J. R.%20Genetic%20programming%20(MIT,%201998)(T)(ISBN%200262111705)(609s).djvu

8. Царев Ф.Н., Шалыто А. А. О построении автоматов с минимальным числом состояний для задачи об «умном муравье» / Сборник докладов X международной конференции по мягким вычислениям и измерениям. СПбГЭТУ "ЛЭТИ". Т.2, 2007, с. 8891. - Режим доступа: http://is.ifmo.ru/download/ant_ga_min_number_of_state.pdf

9. Яминов Б. Генетические алгоритмы. - Режим доступа: http://rain.ifmo.ru/cat/view.php/theory/unsorted/genetic-2005

10. Поликарпова Н.И., Точилин В.Н., Шалыто А.А. Применение генетического программирования для реализации систем со сложным поведением / Научно-технический вестник СПбГУ ИТМО. - 2007. - Выпуск 39. - С 276-293.

11. Режим доступа: http://vestnik.ifmo.ru/ntv/39/ntv_39.3.3.pdf

12. De Jong K. An analysis of the behaviour of a class of genetic adaptive systems. PhD thesis. Univ Michigan. Ann Arbor, 1975.

УДК 004.4'242

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

П.Г. Лобанов

(Санкт-Петербургский государственный университет информационных технологий, механики и оптики)

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

Введение

Генетические алгоритмы применяются при решении широкого круга задач. Однако при использовании классического генетического алгоритма часто требуются очень большие вычислительные ресурсы, чтобы получить решение с необходимой степенью точности. В ряде случаев классический алгоритм может не справиться с поставленной задачей за разумное время. Для повышения скорости сходимости генетического алгоритма и улучшения устойчивости его работы, как правило, применяются модификации, учитывающие особенности решаемой задачи. В работах [1, 2] рассматриваются оценочные функции и способы их адаптации для улучшения эффективности генетических алгоритмов. В работе [3] на примере задачи коммивояжера рассматривается, как зави-

i Надоели баннеры? Вы всегда можете отключить рекламу.