Статья в формате PDF - Кафедра «Технологии программирования
Статья в формате PDF - Кафедра «Технологии программирования
Статья в формате PDF - Кафедра «Технологии программирования
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Статья</strong> опублико<strong>в</strong>ана <strong>в</strong> материалах 1-й Российской мультиконференции по проблемам<br />
упра<strong>в</strong>ления – <strong>в</strong> сборнике докладо<strong>в</strong> 4-й Всероссийской научной конференции<br />
"Упра<strong>в</strong>ление и информационные технологии" (УИТ-2006). СПбГЭТУ "ЛЭТИ". 2006, с.<br />
144-149.<br />
ИСПОЛЬЗОВАНИЕ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ ДЛЯ<br />
АВТОМАТИЧЕСКОГО ПОСТРОЕНИЯ КОНЕЧНЫХ АВТОМАТОВ В<br />
ЗАДАЧЕ О «ФЛИБАХ»<br />
П. Г. ЛОБАНОВ, А. А. ШАЛЫТО<br />
Санкт-Петербургский государст<strong>в</strong>енный<br />
уни<strong>в</strong>ерситет информационных технологий механики и оптики<br />
В<strong>в</strong>едение. Сущест<strong>в</strong>уют сложные задачи, которые эффекти<strong>в</strong>но решаются с помощью<br />
конечных а<strong>в</strong>томато<strong>в</strong> [1]. В большинст<strong>в</strong>е случае<strong>в</strong> их построение <strong>в</strong>ыполняется э<strong>в</strong>ристически.<br />
Поэтому <strong>в</strong>есьма актуальной я<strong>в</strong>ляются задачи формализации методо<strong>в</strong> построения<br />
а<strong>в</strong>томато<strong>в</strong> и а<strong>в</strong>томатизация этих методо<strong>в</strong>.<br />
Из<strong>в</strong>естно несколько задач (итериро<strong>в</strong>анная дилемма узнико<strong>в</strong> [2], задача про «умного»<br />
мура<strong>в</strong>ья [3], задачи синхронизации [4] и классификации плотности [5, 6] для клеточных<br />
а<strong>в</strong>томато<strong>в</strong>), <strong>в</strong> которых генетические алгоритмы [7] поз<strong>в</strong>оляют а<strong>в</strong>томатически строить<br />
а<strong>в</strong>томаты, решающие указанные задачи.<br />
В настоящей работе рассматри<strong>в</strong>ается еще одна задача этого класса – задача о флибах [8].<br />
1. Задача о флибах. Рассматри<strong>в</strong>аемая задача – это задача моделиро<strong>в</strong>ания простейшего<br />
жи<strong>в</strong>ого сущест<strong>в</strong>а, которое способно предсказы<strong>в</strong>ать имеющие периодичность изменения<br />
простейшей окружающей среды. При этом жи<strong>в</strong>ое сущест<strong>в</strong>о моделируется конечным<br />
а<strong>в</strong>томатом, а генетические алгоритмы поз<strong>в</strong>оляют а<strong>в</strong>томатически построить а<strong>в</strong>томат, который<br />
предсказы<strong>в</strong>ает изменения среды с достаточно <strong>в</strong>ысокой точностью. Таким образом, при<br />
решении данной задачи требуется построить «устройст<strong>в</strong>о», которое предсказы<strong>в</strong>ает<br />
изменения среды с наибольшей <strong>в</strong>ероятностью.<br />
В работе [8] для решения указанной задачи используется один из генетических<br />
алгоритмо<strong>в</strong>. При этом точность предсказания построенного а<strong>в</strong>томата я<strong>в</strong>ляется недостаточно<br />
<strong>в</strong>ысокой. Это <strong>в</strong>о многом с<strong>в</strong>язано с подходом, используемым при построении следующего<br />
поколения особей (а<strong>в</strong>томато<strong>в</strong>).<br />
2. Постано<strong>в</strong>ка задачи. Одна из <strong>в</strong>ажнейших способностей жи<strong>в</strong>ых сущест<strong>в</strong> – предсказание<br />
изменений окружающей среды. В качест<strong>в</strong>е простейшей модели такого сущест<strong>в</strong>а можно<br />
использо<strong>в</strong>ать конечный а<strong>в</strong>томат. В работе [8] такие конечноа<strong>в</strong>томатные модели наз<strong>в</strong>аны<br />
флибами (сокращение от finite living blobs – конечные жи<strong>в</strong>ые капельки).<br />
На <strong>в</strong>ход флиба подается переменная, которая принимает одно из д<strong>в</strong>ух значений – ноль<br />
или единица. Эта переменная соот<strong>в</strong>етст<strong>в</strong>ует состоянию окружающей среды <strong>в</strong> текущий<br />
момент <strong>в</strong>ремени. Среда настолько проста, что имеет только д<strong>в</strong>а состояния. Флиб изменяет<br />
с<strong>в</strong>ое состояние и формирует значение <strong>в</strong>ыходной переменной, принимающей одно из д<strong>в</strong>ух<br />
указанных значений. Это значение соот<strong>в</strong>етст<strong>в</strong>ует <strong>в</strong>озможному состоянию среды <strong>в</strong><br />
следующий момент <strong>в</strong>ремени.<br />
Задача флиба – предсказать какое на самом деле состояние окружающей среды наступит<br />
<strong>в</strong> следующий момент <strong>в</strong>ремени. Это можно <strong>в</strong>ыполнить благодаря периодичности изменений<br />
состояний среды. При этом считается, что чем <strong>в</strong>ыше <strong>в</strong>ероятность предсказания изменений<br />
среды, тем больше <strong>в</strong>ероятность у флиба <strong>в</strong>ыжить и оста<strong>в</strong>ить потомст<strong>в</strong>о.
3. Схемы работы генетических алгоритмо<strong>в</strong> <strong>в</strong> задаче о флибах. При<strong>в</strong>едем схемы<br />
работы из<strong>в</strong>естного и предлагаемого алгоритмо<strong>в</strong>.<br />
3.1. Из<strong>в</strong>естный алгоритм. Для поиска оптимального предсказателя <strong>в</strong> работе [8]<br />
предлагается использо<strong>в</strong>ать генетический алгоритм.<br />
1. Создается поколение случайных флибо<strong>в</strong>.<br />
2. Подсчиты<strong>в</strong>ается сколько изменений состояний окружающей среды пра<strong>в</strong>ильно<br />
предсказы<strong>в</strong>ает каждый флибо<strong>в</strong>.<br />
3. Определяются худший и лучший предсказатели <strong>в</strong> поколении.<br />
4. Лучший предсказатель скрещи<strong>в</strong>ается со случайно <strong>в</strong>ыбранным флибом.<br />
5. Случайным образом определяется необходимость применения к полученному<br />
флибу оператора мутации. Если это необходимо, то указанный оператор<br />
применяется к флибу.<br />
6. Худший предсказатель <strong>в</strong> поколении заменяется на флиб, полученный <strong>в</strong> результате<br />
скрещи<strong>в</strong>ания. После <strong>в</strong>ыполненной замены считается, что но<strong>в</strong>ое поколение<br />
сгенериро<strong>в</strong>ано.<br />
7. Если один из флибо<strong>в</strong> достиг уро<strong>в</strong>ня предсказания ра<strong>в</strong>ного 100% или пользо<strong>в</strong>атель<br />
остано<strong>в</strong>ил программу, то алгоритм прекращает работу. В проти<strong>в</strong>ном случае<br />
переходим к пункту 2.<br />
Алгоритм создания случайных флибо<strong>в</strong>, а также работа операторо<strong>в</strong> одноточечного<br />
скрещи<strong>в</strong>ания и мутации, будут подробно рассмотрены <strong>в</strong> разд. 4, 7, 8.<br />
3.2. Предлагаемый алгоритм. В настоящей работе предложено применять метод<br />
генерации но<strong>в</strong>ого поколения, отличающийся от метода, описанного <strong>в</strong> разд. 3.1.<br />
Предлагаемый метод использует турнирный отбор [9] и принцип элитизма (<strong>в</strong> но<strong>в</strong>ое<br />
поколение доба<strong>в</strong>ляется одна или несколько лучших особей из предыдущего поколения) [10].<br />
Этот алгоритм имеет следующий <strong>в</strong>ид.<br />
1. Создается текущее поколение случайных флибо<strong>в</strong>.<br />
2. Подсчиты<strong>в</strong>ается сколько изменений состояний окружающей среды пра<strong>в</strong>ильно<br />
предскажет каждый из этих флибо<strong>в</strong>.<br />
3. Строится но<strong>в</strong>ое поколение флибо<strong>в</strong>:<br />
a. Создается пустое но<strong>в</strong>ое поколение и <strong>в</strong> него доба<strong>в</strong>ляется лучший предсказатель<br />
из текущего поколения.<br />
b. Случайным образом из текущего поколения <strong>в</strong>ыбираются д<strong>в</strong>е пары флибо<strong>в</strong>.<br />
c. Из каждой пары <strong>в</strong>ыбирается лучший предсказатель.<br />
d. Лучшие предсказатели из указанных пар скрещи<strong>в</strong>аются.<br />
e. Случайным образом определяется необходимость применения к полученному<br />
флибу оператора мутации. Если это необходимо, то указанный оператор<br />
применяется к флибу.<br />
f. К флибу применяется но<strong>в</strong>ая операция – «Восстано<strong>в</strong>ление с<strong>в</strong>язей между<br />
состояниями а<strong>в</strong>томата».<br />
g. Флиб доба<strong>в</strong>ляется <strong>в</strong> но<strong>в</strong>ое поколение.<br />
h. Переходим к пункту b, если число флибо<strong>в</strong> <strong>в</strong> но<strong>в</strong>ом поколении меньше числа<br />
флибо<strong>в</strong> <strong>в</strong> текущем поколении.<br />
4. Текущее поколение флибо<strong>в</strong> заменяется но<strong>в</strong>ым.<br />
5. Если число поколений меньше заданного пользо<strong>в</strong>ателем, то переходим к пункту 2.<br />
Число флибо<strong>в</strong> <strong>в</strong> поколении будем назы<strong>в</strong>ать размером поколения.<br />
4. Реализация флиба. Опишем из<strong>в</strong>естный и предлагаемый методы реализации флиба.<br />
4.1. Из<strong>в</strong>естный метод. По<strong>в</strong>едение флибо<strong>в</strong> описы<strong>в</strong>ается с помощью таблиц переходо<strong>в</strong> и<br />
<strong>в</strong>ыходо<strong>в</strong>. В табл. 1 <strong>в</strong> качест<strong>в</strong>е примера при<strong>в</strong>едено описание по<strong>в</strong>едения флиба с тремя<br />
состояниями A, B и C.
Таблица 1. Пример таблицы переходо<strong>в</strong> и <strong>в</strong>ыходо<strong>в</strong> флиба<br />
Состояния 0 1<br />
A 1, B 0, A<br />
B 0, C 0, A<br />
C 1, A 0, B<br />
Предста<strong>в</strong>им эту таблицу <strong>в</strong> <strong>в</strong>иде строки: 1B0A0C0A1A0B (такое предста<strong>в</strong>ление<br />
используется <strong>в</strong> работе [8]). Отметим, что число элементо<strong>в</strong> <strong>в</strong> при<strong>в</strong>еденной строке <strong>в</strong> четыре<br />
раза больше числа состояний флиба. Пронумеруем состояния флиба и элементы строки,<br />
задающей его. Пер<strong>в</strong>ому состоянию и пер<strong>в</strong>ому элементу строки прис<strong>в</strong>оим номер ноль. Если<br />
флиб находится <strong>в</strong> состоянии с номером s и текущее состояние среды i, то состояние, <strong>в</strong><br />
которое флиб перейдет, содержится <strong>в</strong> элементе строки, задающей флиб. Этот элемент имеет<br />
номер 4s + 2i + 1. Значение <strong>в</strong>ыходной переменной, генерируемой флибом, содержится <strong>в</strong><br />
элементе с номером 4s + 2i.<br />
Для генерации случайного флиба требуется задать значения элементо<strong>в</strong> строки<br />
случайным образом.<br />
При<strong>в</strong>едем алгоритм генерации случайного флиба, заданного строкой.<br />
1. Цикл по <strong>в</strong>сем элементам строки, задающей флиб.<br />
a. Если номер элемента четный, то элементу прис<strong>в</strong>аи<strong>в</strong>ается одно из<br />
<strong>в</strong>озможных состояний окружающей среды, <strong>в</strong>ыбранное случайным образом.<br />
b. Если номер элемента нечетный, то элементу прис<strong>в</strong>аи<strong>в</strong>ается одно из<br />
<strong>в</strong>озможных состояний флиба, <strong>в</strong>ыбранное случайным образом.<br />
4.2. Предлагаемый метод. В настоящей работе предлагается использо<strong>в</strong>ать другой<br />
способ кодиро<strong>в</strong>ания флиба, реализуемый с помощью трех классо<strong>в</strong> – Flib, State и<br />
Branch.<br />
В качест<strong>в</strong>е гла<strong>в</strong>ного класса при реализации флиба применяется класс Flib. Классы<br />
State и Branch реализуют его состояния и переходы соот<strong>в</strong>етст<strong>в</strong>енно. Во <strong>в</strong>сех этих классах<br />
имеется метод Clone, предназначенный для создания копий объекто<strong>в</strong>.<br />
Масси<strong>в</strong> _states <strong>в</strong> классе Flib содержит состояния флиба. Поле _curStateIndex<br />
используется для хранения номера текущего состояния флиба <strong>в</strong> масси<strong>в</strong>е _states. Число<br />
пра<strong>в</strong>ильно предсказанных <strong>в</strong>ходных сим<strong>в</strong>оло<strong>в</strong> размещается <strong>в</strong> поле _guessCount. Метод<br />
Step пере<strong>в</strong>одит флиб <strong>в</strong> но<strong>в</strong>ое состояние и <strong>в</strong>ычисляет количест<strong>в</strong>о пра<strong>в</strong>ильно предсказанных<br />
сим<strong>в</strong>оло<strong>в</strong>. Метод Nulling устана<strong>в</strong>ли<strong>в</strong>ает флиб <strong>в</strong> начальное состояние.<br />
В масси<strong>в</strong>е _branches класса State содержатся дуги переходо<strong>в</strong> из данного состояния.<br />
Номер элемента <strong>в</strong> масси<strong>в</strong>е соот<strong>в</strong>етст<strong>в</strong>ует <strong>в</strong>ходной переменной.<br />
Переменные _stateIndex и _output класса Branch содержат номер состояния и<br />
значение <strong>в</strong>ыходной переменной. Константа TARGET_COUNT определяет количест<strong>в</strong>а<br />
значений, которые может принимать <strong>в</strong>ыходная переменная, генерируемая флибом.<br />
Опишем работу программы генерации случайного флиба.<br />
1. Создаются объекты, соот<strong>в</strong>етст<strong>в</strong>ующие состояниям флиба.<br />
2. Для каждого объекта <strong>в</strong>ыполняется следующее:<br />
a. Для состояния формируются переходы из него.<br />
b. Для каждого перехода случайным образом определяются номер<br />
состояния, <strong>в</strong> которое переходит флиб и значение <strong>в</strong>ыходной переменной.<br />
5. Генератор <strong>в</strong>ходного сигнала. В качест<strong>в</strong>е <strong>в</strong>ходного сигнала для флибо<strong>в</strong> (как и <strong>в</strong> работе<br />
[8]) используется по<strong>в</strong>торяющаяся последо<strong>в</strong>ательность бито<strong>в</strong>, наз<strong>в</strong>анная бито<strong>в</strong>ой маской<br />
задающей среду. Эта маска <strong>в</strong> программе зациклена.
6. Оценочная функция. Лучшим предсказателем я<strong>в</strong>ляется тот флиб, который наиболее<br />
точно предсказы<strong>в</strong>ает <strong>в</strong>ходной сигнал. В качест<strong>в</strong>е оценочной функции используется<br />
количест<strong>в</strong>о пра<strong>в</strong>ильно угаданных сим<strong>в</strong>оло<strong>в</strong>. После формиро<strong>в</strong>ания но<strong>в</strong>ого поколения <strong>в</strong>се<br />
флибы <strong>в</strong> нем устана<strong>в</strong>ли<strong>в</strong>аются <strong>в</strong> начальное состояние. Затем для определения<br />
приспособленности флибо<strong>в</strong>, на <strong>в</strong>ход каждого из них подается несколько <strong>в</strong>ходных сим<strong>в</strong>оло<strong>в</strong>.<br />
После этого можно строить но<strong>в</strong>ое поколение решений, используя <strong>в</strong> качест<strong>в</strong>е<br />
приспособленности флиба значение поля, содержащее число пра<strong>в</strong>ильно предсказанных<br />
сим<strong>в</strong>оло<strong>в</strong>.<br />
7. Алгоритмы построения оператора одноточечного скрещи<strong>в</strong>ания. Опишем<br />
из<strong>в</strong>естный и предлагаемый алгоритмы построения оператора одноточечного скрещи<strong>в</strong>ания.<br />
7.1. Из<strong>в</strong>естный алгоритм. В работе [8] формиро<strong>в</strong>ание но<strong>в</strong>ого флибо<strong>в</strong> из д<strong>в</strong>ух<br />
сущест<strong>в</strong>ующих родительских <strong>в</strong>ыполняется с помощью оператора одноточечного<br />
скрещи<strong>в</strong>ания. При<strong>в</strong>едем описание алгоритма работы этого оператора для флиба,<br />
закодиро<strong>в</strong>анного строкой длины m.<br />
1. Выбирается случайное число j от 0 до m-1.<br />
2. Элементы с номерами меньшими либо ра<strong>в</strong>ными j из строки, задающей пер<strong>в</strong>ый<br />
родительский флиб, копируются <strong>в</strong> строку, задающую но<strong>в</strong>ый флиб.<br />
3. Элементы с номерами большими j из строки, задающей <strong>в</strong>торой родительский<br />
флиб, копируются <strong>в</strong> строку, задающую но<strong>в</strong>ый флиб.<br />
7.2. Предлагаемый алгоритм. Для применения оператора одноточечного скрещи<strong>в</strong>ания<br />
для флиба, закодиро<strong>в</strong>анного <strong>в</strong> <strong>в</strong>иде объекта класса, алгоритм, описанный <strong>в</strong> работе [8],<br />
требуется модифициро<strong>в</strong>ать. При этом он имеет следующий <strong>в</strong>ид.<br />
1. Случайным образом <strong>в</strong>ыбирается номер одного из состояний но<strong>в</strong>ого флиба.<br />
2. В этот флиб доба<strong>в</strong>ляются состояния пер<strong>в</strong>ого родителя, номера которых меньше<br />
<strong>в</strong>ыбранного номера, и состояния <strong>в</strong>торого родителя, номера которых больше<br />
<strong>в</strong>ыбранного номера.<br />
3. Формируется и доба<strong>в</strong>ляется но<strong>в</strong>ое состояние, образо<strong>в</strong>анное из состояний пер<strong>в</strong>ого и<br />
<strong>в</strong>торого родителей, которые соот<strong>в</strong>етст<strong>в</strong>уют <strong>в</strong>ыбранному номеру. Алгоритм<br />
формиро<strong>в</strong>ания состояния аналогичен алгоритму работы оператора одноточечного<br />
скрещи<strong>в</strong>ания, который описан <strong>в</strong> разд. 7.1.<br />
8. Алгоритмы построения оператора мутации. Опишем из<strong>в</strong>естный и предлагаемый<br />
алгоритмы построения оператора мутации.<br />
8.1. Из<strong>в</strong>естный алгоритм. Алгоритм оператора мутации, используемый <strong>в</strong> работе [8],<br />
имеет следующий <strong>в</strong>ид.<br />
1. Случайным образом <strong>в</strong>ыбирается элемент <strong>в</strong> строке, задающей флиб.<br />
2. Если номер элемента четный (<strong>в</strong> элементе содержится значение <strong>в</strong>ыходной<br />
переменной, генерируемой флибом), то значение переменной ин<strong>в</strong>ертируется.<br />
3. Если номер элемента нечетный (<strong>в</strong> элементе содержится состояние флиба), то<br />
номер текущего состояния флиба заменяется следующим.<br />
8.2. Предлагаемый алгоритм. В настоящей работе предлагается использо<strong>в</strong>ать<br />
следующий алгоритм для оператора мутации.<br />
1. Случайным образом <strong>в</strong>ыбирается состояние флиба.<br />
2. Случайным образом <strong>в</strong>ыбирается дуга из <strong>в</strong>ыбранного состояния флиба.<br />
3. Случайным образом определяется, что будет изменяться – значение <strong>в</strong>ыходной<br />
переменной, генерируемой флибом, или номер состояния, <strong>в</strong> которое он попадет<br />
при переходе по <strong>в</strong>ыбранной дуге.<br />
a. Если было определено, что изменяется значение <strong>в</strong>ыходной переменной,<br />
то ей прис<strong>в</strong>аи<strong>в</strong>ается значение состояния среды, <strong>в</strong>ыбранное случайным<br />
образом.
. Если было определено, что изменяется номер состояния, то номеру<br />
состояния, <strong>в</strong> которое переходит флиб, прис<strong>в</strong>аи<strong>в</strong>ается номер случайно<br />
<strong>в</strong>ыбранного состояния флиба.<br />
9. Восстано<strong>в</strong>ление с<strong>в</strong>язей между состояниями. При генерации но<strong>в</strong>ого поколения,<br />
применении операторо<strong>в</strong> скрещи<strong>в</strong>ания и мутации, дуги переходо<strong>в</strong> <strong>в</strong> флибах изменяются<br />
случайным образом. При таком изменении дуг, <strong>в</strong>о флибах могут <strong>в</strong>озникать состояния, <strong>в</strong><br />
которые не<strong>в</strong>озможно попасть из начального состояния при любой последо<strong>в</strong>ательности<br />
изменений состояний среды. Будем назы<strong>в</strong>ать такие состояния недоступными. Состояния, <strong>в</strong><br />
которые можно попасть из начального состояния при некоторой последо<strong>в</strong>ательности<br />
изменений состояний среды будем назы<strong>в</strong>ать доступными. Алгоритм <strong>в</strong>осстано<strong>в</strong>ления с<strong>в</strong>язей<br />
между состояния изменяет дуги переходо<strong>в</strong> <strong>в</strong>о флибе таким образом, чтобы <strong>в</strong> нем не было<br />
недоступных состояний.<br />
Предлагаемый алгоритм имеет следующий <strong>в</strong>ид.<br />
1. Формируется список доступных состояний (метод InitIndexesList). Для<br />
этого используется функция рекурси<strong>в</strong>ного обхода состояний AddIndex.<br />
2. Выполняется цикл по <strong>в</strong>сем состояниям. Если текущее состояние не <strong>в</strong>ходит <strong>в</strong><br />
число доступных, то для него <strong>в</strong>ыполняются следующие операции:<br />
a. Случайным образом <strong>в</strong>ыбирается состояние из списка доступных<br />
состояний.<br />
b. Выбирается случайным образом одна из дуг из <strong>в</strong>ыбранного состояния.<br />
c. В текущем состоянии заменяется одна дуга из этого состояния на дугу,<br />
которая <strong>в</strong>едет <strong>в</strong> тоже состояние, что и дуга, <strong>в</strong>ыбранная <strong>в</strong> пункте b.<br />
d. Выбранная <strong>в</strong> пункте b дугу заменяется дугой, которая <strong>в</strong>едет <strong>в</strong> текущее<br />
состояние.<br />
e. Обно<strong>в</strong>ляется список доступных состояний. В него доба<strong>в</strong>ляется текущее<br />
состояние и <strong>в</strong>се состояния, <strong>в</strong> которые можно попасть из него.<br />
10. Общие требо<strong>в</strong>ания к экспериментам. Все эксперименты про<strong>в</strong>одились при 100<br />
особях <strong>в</strong> поколении и <strong>в</strong>ероятности применения оператора мутации 0,03. Число <strong>в</strong>оздейст<strong>в</strong>ий<br />
среды на флиб также <strong>в</strong>ыбрано ра<strong>в</strong>ным 100. Поэтому число пра<strong>в</strong>ильно предсказанных<br />
сим<strong>в</strong>оло<strong>в</strong> по <strong>в</strong>еличине ра<strong>в</strong>но точности предсказания сим<strong>в</strong>оло<strong>в</strong> <strong>в</strong> процентах. В таблицах с<br />
результатами эксперименто<strong>в</strong> (табл. 2, 3) при<strong>в</strong>одятся минимальная, максимальная и средняя<br />
точности предсказания а<strong>в</strong>томатически построенных флибо<strong>в</strong>.<br />
Ниже описаны результаты д<strong>в</strong>ух эксперименто<strong>в</strong>, которые отличаются между собой<br />
<strong>в</strong>ыбранным числом поколений, бито<strong>в</strong>ой маской и числом состояний флибо<strong>в</strong>.<br />
10.1. Пер<strong>в</strong>ый эксперимент. Эксперимент произ<strong>в</strong>одился для 400 поколений. Бито<strong>в</strong>ая<br />
маска, задающая среду, имеет <strong>в</strong>ид – 1111010010111101001. Число состояний флиба – 20.<br />
Результаты пер<strong>в</strong>ого эксперимента при<strong>в</strong>едены <strong>в</strong> табл. 2.<br />
Таблица 2. Результаты пер<strong>в</strong>ого эксперимента<br />
Восстано<strong>в</strong>ление<br />
с<strong>в</strong>язей между<br />
состояниями<br />
Худший<br />
результат<br />
Усредненный<br />
результат<br />
Лучший<br />
результат<br />
Из<strong>в</strong>естный алгоритм – 70 78,3 88<br />
Предложенный<br />
– 83 92,26 100<br />
алгоритм + 84 93,48 100<br />
10.2. Второй эксперимент. Эксперимент произ<strong>в</strong>одился для 1600 поколений. Бито<strong>в</strong>ая<br />
маска, задающая среду, имеет <strong>в</strong>ид – 1010111101100011110111110011001. Число<br />
состояний флиба – 30. Отметим, что бито<strong>в</strong>ая маска <strong>в</strong> этом эксперименте имеет большее<br />
число разрядо<strong>в</strong>, чем <strong>в</strong> предыдущем. Результаты <strong>в</strong>торого эксперимента при<strong>в</strong>едены <strong>в</strong> табл. 3.
Таблица 3. Результаты <strong>в</strong>торого эксперимента<br />
Восстано<strong>в</strong>ление<br />
Худший<br />
с<strong>в</strong>язей между<br />
результат<br />
состояниями<br />
Усредненный<br />
результат<br />
Лучший<br />
результат<br />
Из<strong>в</strong>естный алгоритм – 70 75,86 87<br />
Предложенный<br />
– 83 90,44 97<br />
алгоритм + 86 92,72 97<br />
Из рассмотрения таблицы следует, что предложенный алгоритм пре<strong>в</strong>осходит из<strong>в</strong>естный<br />
по <strong>в</strong>сем параметрам.<br />
Вы<strong>в</strong>оды. Про<strong>в</strong>еденные эксперименты показали, что предложенный метод<br />
эффекти<strong>в</strong>нее из<strong>в</strong>естного как при различных бито<strong>в</strong>ых масках, задающих среду, так и при<br />
различном числе состояний флибо<strong>в</strong>.<br />
ЛИТЕРАТУРА<br />
1. Шалыто А.А. Технология а<strong>в</strong>томатного программиро<strong>в</strong>ания // Мир ПК. 2003. № 10,<br />
с. 74–78. http://is.ifmo.ru/works/tech_aut_prog/<br />
2. Mitchell M. An Introduction to Genetic Algorithms. MIT Press. Cambridge. MA, 1996.<br />
3. Langdon W., Poli R. Better Trained Ants for Genetic Programming, 1998.<br />
4. Wolfram S. A New Kind of Science. Wolfram Media, 2002.<br />
5. Mitchell M., Crutchfield J., Hraber P. Evolving cellular automata to perform computations.<br />
Physica D. 1993. 75. pp.361–391.<br />
6. Бедный Ю.Д. Применение генетических алгоритмо<strong>в</strong> для решения одной задачи на<br />
клеточных а<strong>в</strong>томато<strong>в</strong>. Задача классификации плотности для клеточных а<strong>в</strong>томато<strong>в</strong>.<br />
СПбГУ ИТМО. Бакала<strong>в</strong>рская работа. 2006. http://is.ifmo.ru, раздел «Работы».<br />
7. Whitley D. A Genetic Algorithm Tutorial. Statistics and Computing. 1994. 4, pp. 65-85.<br />
http://www.cs.colostate.edu/~genitor/Pubs.html.<br />
8. Воронин О., Дьюдни А. Дар<strong>в</strong>инизм <strong>в</strong> программиро<strong>в</strong>ании // Мой компьютер. 2004.<br />
№ 35. http://www.mycomp.kiev.ua/text/7458.<br />
9. Miller B., Goldberg M. Genetic algorithms, tournament selection, and the effects of noise //<br />
Complex Systems. 1995. 3, pp. 193–212.<br />
10. De Jong K. An analysis of the behavior of a class of genetic adaptive systems. PhD thesis.<br />
Univ. Michigan. Ann Arbor, 1975.