ИСПОЛЬЗОВАНИЕ АВТОМАТОВ С ФЛАГАМИ ДЛЯ РЕШЕНИЯ
ЗАДАЧИ О «ФЛИБАХ» П.Г Лобанов, А.А. Шалыто
Предложен метод реализации флибов, моделирующих поведение простейших живых существ в простейшей среде, с помощью автоматов с флагами. Выполнены вычислительные эксперименты, демонстрирующие эффективность предложенного метода по сравнению с известным.
Введение
Существует класс задач (итерированная дилемма узников [1], задача про «умного» муравья [2], задачи синхронизации [3] и классификации плотности [4, 5] для клеточных автоматов), в качестве решения которых может выступать автомат. Для этих задач существуют генетические алгоритмы [6], которые позволяют автоматически строить автоматы, являющиеся решением данных задач.
В работе [7] также была рассмотрена задача, для решения которой требуется построить автомат. Это задача о флибах. В работе [8] был предложен подход, позволивший получить более точное решение задачи о флибах.
Целью данной работы является разработка нового метода, позволяющего улучшить результаты, достигнутые в работах [7, 8].
1. Задача о флибах
Флиб моделирует поведение простейшего живого существа. Это существо способно предсказывать имеющие периодичность изменения простейшей окружающей среды. В качестве модели живого существа используется конечный автомат. Генетические алгоритмы позволяют построить автомат, который предсказывает изменения среды с достаточно высокой точностью. Таким образом, при решении данной задачи требуется построить «устройство» (предсказатель), которое предсказывает изменения среды с наибольшей вероятностью.
2. Постановка задачи
Одна из важнейших способностей живых существ - предсказание изменений окружающей среды. В качестве простейшей модели живого существа можно использовать конечный автомат. В работе [7] такие конечноавтоматные модели названы флиба-ми (сокращение от finite living blobs - конечные живые капельки).
На вход флиба подается переменная, которая принимает одно из двух значений -ноль или единица. Эта переменная соответствует состоянию окружающей среды в текущий момент времени. Изменения окружающей среды задаются повторяющейся последовательностью битов (битовой маской). Флиб изменяет свое состояние и формирует значение выходной переменной. Это значение соответствует возможному состоянию среды в следующий момент времени.
Флиб должен предсказать какое состояние окружающей среды наступит в следующий момент времени. Благодаря периодичности входного сигнала можно построить автомат, который будет правильно предсказывать состояние среды заданное определенной маской.
Точность, с которой флиб предсказывает изменения среды, используется в качестве оценочной функции в генетическом алгоритме.
В работе [7] для решения указанной задачи используется один из генетических алгоритмов. Предложенный в работе [8] подход, позволяет улучшить этот алгоритм за счет изменения способа формирования поколения (используется турнирный отбор [9] и
принцип элитизма [10]) и применения операции восстановления связей между состояниями.
Данная работа базируется на генетическом алгоритме [8], для улучшения точности решений которого предлагается использовать в качестве флиба вместо обычного автомата автомат с флагами [11]. В связи с отсутствием изменений в генетическом алгоритме, предложенном в [8], его описание и реализация в данной работе не приводятся.
3. Известный способ реализации флиба
Поведение флиба описывается с помощью таблицы переходов и выходов. В табл. 1 в качестве примера приведен флиб с тремя состояниями A, B и С, который всегда имеет одну входную и одну выходную переменную.
Состояния Входная переменная
0 1
A 1, в 0, A
B 0, с 0, A
C 1, A 0, в
Таблица 1. Таблица переходов и выходов для флиба с тремя состояниями
На рис. 1 изображен граф переходов для флиба, таблица переходов и выходов которого приведена в табл. 1.
1/0
Рис 1. Граф переходов для флиба с тремя состояниями
В работе [8] применялся способ реализации флиба с помощью трех классов: Flib, State и Branch, которые приведены на сайте http://is.ifmo.ru в разделе "Статьи".
В качестве главного класса при реализации флиба применяется класс Flib. Классы State и Branch реализуют его состояния и переходы соответственно. В каждом из этих классов имеется метод Clone, предназначенный для создания копий объектов.
Массив _states в классе Flib содержит состояния флиба. Поле _curStateIndex используется для хранения номера текущего состояния флиба в массиве _states. Число правильно предсказанных входных символов размещается в поле _guessCount. Метод Step переводит флиб в новое состояние и, при необходимости, изменяет количество правильно предсказанных символов. Метод Nulling возвращает флиб в начальное состояние, и обнуляется число правильно предсказанных символов.
В массиве _branches класса State содержатся дуги переходов из данного состояния. Номер элемента в массиве соответствует входной переменной.
4. Использование автоматов с флагами для реализации флиба
В работе [11] предложен класс автоматов, названный "автоматы с флагами". В таких автоматах используется вектор многозначных флаговых переменных F, который содержит информацию о "глубокой предыстории" - предыдущих состояниях автомата. Автоматы данного класса взаимодействуют с внутренними ячейками многозначной памяти.
Флаговые переменные используются в качестве внутренних входных и выходных переменных автомата. В таких автоматах переход в следующее состояние зависит не только от текущего состояния и соответствующих значений входных переменных, но и от значений флаговых переменных, определяемых состояниями, в которых автомат находился ранее. Как показано в работе [11], использование флаговых переменных в общем случае может позволить уменьшить число состояний в автомате. Это, правда, затрудняет понимание алгоритма работы автомата. Однако, этот недостаток не является существенным для случая автоматической генерации автоматов.
В настоящей работе предлагается модификация флаговых автоматов, в которой флаговые переменные используются для хранения предыдущих состояний окружающей среды. Во флаговой переменной с номером один будем хранить состояние среды на предыдущий момент времени, а во флаговой переменной с номером n, будем хранить состояние среды на n шагов назад.
Пусть ^ и F = (/1,..., fn) соответственно состояние среды и вектор флаговых переменных в текущий момент времени. Тогда вектор флаговых переменных для следующего момента времени будет иметь вид F' = f = s, f2' = /1,., fn' = /П-1). При программной реализации флаговые переменные хранятся в массиве. Переход от F к F' выполняется с помощью удаления последнего элемента массива и вставки в начало массива текущего состояния среды s.
Состояния Флаговая и входная переменные
00 01 10 11
A 1, A 1, в 0, в 0, A
B 1, в 1, с 0, с 0, A
C 0, в 0, с 1, A 1, в
Таблица 2. Флиб с тремя состояниями
Введение каждой новой флаговой переменной увеличивает число дуг из каждого состояния вдвое. При п флаговых переменных число дуг из каждого состояния флиба будет равно (1 + п)2. Номер дуги, которая должна использоваться в текущий момент времени для перехода, можно вычислить по формуле £ + 21/1+22/2+...+2п/п. Номер этой дуги может быть записан также как двоичное число /п. • -/2/^.
Далее флиб, который моделируется с помощью автомата с флагами, будем называть флибом с флагами.
В табл. 2 приведен пример таблицы переходов и выходов для флиба с тремя состояниями и одной флаговой переменной.
На рис. 2 изображен граф переходов для флиба, таблица переходов которого приведена в табл. 2.
00/1 00/1
Рис 2. Граф переходов для флиба с тремя состояниями и одной флаговой переменной
Для реализации флиба с флагами, число которых в общем случае больше одного, используется класс FlibWithMem, который приведен на сайте http://is.ifmo.ru в разделе "Статьи". Данный класс унаследован от класса Flib и перегружает методы Step, Nulling и Clone. Массив _flags используется для хранения значений флаговых переменных.
Для вычисления номера дуги перехода из текущего состояния используется метод GetBranchIndex, принимающий на вход текущее состояние среды.
5. Программа для проведения экспериментов
В программу, написанную в работе [8], была добавлена возможность проведения экспериментов над флибами с флагами. Обновленное окно пользовательского интерфейса программы приведено на рис. 3.
Программа позволяет выполнять алгоритмы, предложенные как в настоящей работе, так и в работах [7, 8]. Выбор алгоритма выполняется в окне с помощью выпадающего списка Способ формирования нового поколения.
В выбираемом алгоритме может быть изменен элитизм в диапазоне от нуля до размера поколения. Программа позволяет выбрать размер поколения и число поколений. Может быть выбрана вероятность применения оператора мутации (в диапазоне от нуля до единицы) и тип оператора скрещивания (одноточечный и двухточечный). В программе имеется возможность задавать битовую маску, определяющую среду. Для
каждого флиба может быть задано число его состояний, и определено будет ли использоваться алгоритм восстановления связей между состояниями.
Помимо этого в новой версии программы с помощью выпадающего списка Тип флиба можно выбрать тип автомата, использующегося для моделирования флиба (простой автомат или автомат с флагами). Также можно указать число флагов, использующихся во флибе.
Рис. 3. Окно пользовательского интерфейса
6. Эксперименты
Все эксперименты, о которых идет речь ниже, проводились при размере поколения равном 500 и числе поколений равном 1000. Вероятность применения оператора мутации была выбрана 0,03. Число воздействий среды на флиб выбрано равным 100. Благодаря этому число правильно предсказанных символов по величине равно точности предсказания символов в процентах. В таблицах с результатами экспериментов приводится минимальные, максимальные и средние точности предсказания автоматически построенных флибов. В качестве битовой маски использовалась строка 1111010010111101001.
Число состояний Худший результат Усредненный результат Лучший результат
10 89 93,76 95
20 90 94,3 95
40 89 94,58 100
80 89 96 100
Таблица 3. Результаты экспериментов над флибами с разным числом состояний
На графиках по оси абсцисс отложены номера поколений, по оси ординат - число правильно предсказанных символов лучшим предсказателем в каждом поколении. При
построении графиков применялись усредненные данные, полученные при проведении 50 экспериментов с одинаковыми начальными параметрами.
Чем больше состояний у автомата, тем более сложным может быть его поведение. Исходя из этого, можно попытаться улучшить точность предсказания с помощью увеличения числа состояний флиба. В табл. 3 приведены результаты экспериментов для флибов, заданных автоматом без флагов и имеющих число состояний от 10 до 80.
Как следует из рассмотрения этой таблицы, увеличение числа состояний действительно несколько улучшает точность найденного предсказателя.
Графики для экспериментов над флибами без флагов с разным числом состояний приведены на рис. 4. Точками изображен график для результатов эксперимента над флибами с 10 состояниями. Штрихпунктирная линия используется для флибов с 20 состояниями, а пунктирная - для флибов с 40 состояниями. График для результатов эксперимента над флибами, имеющими 80 состояний, изображен сплошной линией.
80 ....................................
1 101 201 301 401 501 601 701 301 901
Рис. 4. Графики усредненных результатов предсказаний для эксперимента над флибами с разным числом состояний
Основным недостатком увеличения числа состояний является рост объема вычислений и, как следствие, увеличение времени, необходимого для построения предсказателя
Число состоя- Число флагов Худший ре- Усредненный Лучший резуль-
ний зультат результат тат
80 0 89 96 100
40 1 90 96,82 100
20 2 95 98,54 100
10 3 95 99,74 100
Таблица 4. Результаты экспериментов над флибами с разным числом
состояний и флагов
В табл. 4 приведены результаты экспериментов над флибами с флагами (вторая -четвертая строки таблицы) для разного числа состояний. Следует отметить, что число
флагов и состояний в этих экспериментах подобрано таким образом, что общее число дуг переходов во всех флибах одинаково.
Графики для экспериментов над флибами с разным числом флагов и состояний приведены на рис. 5. Точками изображен график для результатов эксперимента над флибами с 80 состояниями без флагов. Штрихпунктирная линия используется для фли-бов с 40 состояниями и одним флагом, а пунктирная линия используется для флибов с 20 состояниями и двумя флагами. График результатов эксперимента над флибами с 10 состояниями и тремя флагами изображен сплошной линией.
100
-
I t I t ----
95 I ' i Г'"' If r
90 if / !' / t -
85 i> :
1 101 201 301 401 501 601 701 801 901
Рис. 5. Графики усредненных результатов предсказаний для экспериментов над флибами с разным числом состояний и флагов
Из рассмотрения графиков на рис.5 и данных в табл. 4 следует, что увеличение числа флагов приводит к улучшению качества предсказания.
Таким образом, применение автоматов с флагами для моделирования флибов позволяет строить более точные предсказатели.
Заключение
В работе показано, что добавление флагов к автоматам, моделирующим флибы, является более эффективным методом для улучшения точности работы алгоритма, по сравнению с простым увеличением числа состояний флиба.
Литература
1. Mitchell M. An Introduction to Genetic Algorithms. - MIT Press. Cambridge. MA, 1996.
2. Langdon W., Poli R. Better Trained Ants for Genetic Programming, 1998.
3. Wolfram S. A New Kind of Science. - Wolfram Media, 2002.
4. Mitchell M., Crutchfield J., Hraber P. Evolving cellular automata to perform computations. // Physica D. - 1993. - 75. - Р.361-391.
5. Бедный Ю.Д. Применение генетических алгоритмов для решения одной задачи на клеточных автоматов. Задача классификации плотности для клеточных автоматов. СПбГУ ИТМО. Бакалаврская работа. 2006. http://is.ifmo.ru, раздел «Работы».
6. Whitley D. A Genetic Algorithm Tutorial. Statistics and Computing. 1994. 4, pp. 65-85. http://www.cs.colostate.edu/~genitor/Pubs.html.
7. Воронин О., Дьюдни А. Дарвинизм в программировании // Мой компьютер. - 2004. - № 35. http://www.mycomp.kiev.ua/text/7458
8. Лобанов П.Г., Шалыто А.А. Использование генетических алгоритмов для автоматического построения конечных автоматов в задаче о «флибах» / Материалы 1-й Российской мультиконференции по проблемам управления. Сборник докладов 4-й Всероссийской научной конференции "Управление и информационные технологии" (УИТ-2006). - СПбГЭТУ "ЛЭТИ", 2006. - С. 144-149. http://is.ifmo.ru/works/ flib.pdf
9. Miller B., Goldberg M. Genetic algorithms, tournament selection, and the effects of noise // Complex Systems. - 1995. - 3. - Р. 193-212.
10. De Jong K. An analysis of the behavior of a class of genetic adaptive systems. PhD thesis. Univ. Michigan. Ann Arbor, 1975.
11. Шалыто А. А. Switch-технология. Алгоритмизация и программирование задач логического управления. - СПб.: Наука. 1998, 628 с. http://is.ifmo.ru/books/switch/1