10.06.2015 Views

Статья в формате PDF - Кафедра «Технологии программирования

Статья в формате PDF - Кафедра «Технологии программирования

Статья в формате PDF - Кафедра «Технологии программирования

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!