Научная статья на тему 'Генетическое программирование и проблемы синтеза программ'

Генетическое программирование и проблемы синтеза программ Текст научной статьи по специальности «Математика»

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

Текст научной работы на тему «Генетическое программирование и проблемы синтеза программ»

5. Kureichik V.M., Zinchenko L.A. Evolution modeling of integrated dynamic systems // Proceedings ICAFS 2000. Siegen, Germany: Verlag, 2000.

6. Kureichik V.M., Zinchenko L.A. Symbolic information technologies in evolutionary modeling // Proceedings ECAI 2000, ASC 2000, Berlin, Germany: IOS Press, 2000.

7. Курейчик B.M., Зинченко Л.А. Эволюционное моделирование с динамическим изменени-

// VII .

.: , 2000.

УДК 658.512:519.7:007.52

С.И. Родзин

ГЕНЕТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ И ПРОБЛЕМЫ СИНТЕЗА

ПРОГРАММ

Введение. Проблемы компьютерного синтеза программ [1] стали одним из

50- .

автоматической генерации программ, решающих поставленную задачу, привели к достаточно скромным результатам, что вполне объяснимо тогдашним состоянием Hardware и Software. Начиная с середины 80-х годов, интерес исследователей к данной проблематике резко возрос благодаря работам [2,3] по генеттескому программированию (ГП), представленным в рамках 1-й и последующих международных конференций по генетическим алгоритмам. Наиболее значительным следует признать работы Koza [4,5].

Применение scheme-теоремы Холланда [6] для описания динамики эволюционного процесса является сильно упрощенным подходом. В данной работе предлагаются альтернативные подходы на основе анализа статистических и динамических особенностей различных форм представления хромосом в популяции.

Схема генетического программирования. ГП представляет собой одно из направлений в генетических алгоритмах (ГА) и ориентировано, в основном, на решение задач автоматического синтеза программ на основе обучающих данных путем индуктивного вывода. Хромосомы или структуры, которые автоматически генерируются с помощью генетических операторов, являются компьютерными программами различной величины и сложности. Программы состоят из функций, переменных и констант. Исходная популяция P(0) хромосом в ГП образуется случайно и состоит из программ, которые включают в себя элементы множества проблемно-ориентированных элементарных функций (function set), а также проблемно-ориентированные переменные и константы (terminal set). Множества function set и terminal set являются основой для эволюционного синтеза программы, способной наилучшим образом решать поставленную задачу. Одновременно устанавливаются правила выбора элементов из указанных множеств в пространстве всех потенциально синтезируемых программ. Понятно, что множества terminal set и function set, а также правила их обработки, оказывают серьезное влияние на размерность пространства поиска наилучшего решения и на качество результатов, получаемых методами ГП. Структуры ГП имеют древовидную форму.

Koza в своих исследованиях по ГП применяет язык LISP, обладающий всеми необходимыми для синтеза ГП-структур свойствами. Однако, язык LISP имеет свои недостатки и для целей ГП применяются также языки C, Smalltalk, C++.

Поскольку основой моделирования эволюции в ГП являются элементы мно-terminal set function set, , ,

программирования будет в дальнейшем определять вид получаемых решений. Что касается установки fitness-функции, параметров эволюции и критериев остановки процесса моделирования, то они совпадают с аналогичными этапами в ГА.

В качестве элементов function sets могут фигурировать:

1) арифметические операции (например: +, -, *);

2) математические функции (например: sin, cos);

3) булевы операции (например: if-then-else);

4) циклы (например: for, do-until);

5) некоторые специальные функции, для быстрого поиска хороших решений. Элементами множества terminal set являются константы и переменные, среди

которых особое значение имеет, так называемые, ephemeral random (случайные, с коротким временем жизни) константы, в частности, для задач, связанных с оценкой параметров регрессивных функций. Koza упоминает о шести различных константах указанного вида. Речь идет о булевых константах, принимающих значения из множества {T,Nil}, а также вещественных константах, принимающих значение на отрезке [-1.000; 1.000] с шагом 0.001. Множества function set и terminal set должны быть достаточными для нахождения решения задачи, а любая функция быть корректно выполнимой при любых допустимых аргументах (символ операции деления в ГП обозначается через %).

Форма fitness-функции имеет большое значение для эффективности ГП. Об-

fitness- -

, ( , ). Иногда используется критерий "выигрыша", согласно которому выигрыш определяется в зависимости от степени близости к корректному значению целевой функции. Fitness-функцию в ГП называют rohfitness и обозначают через Фго. Однако, на

st. ai -

торую программу из популяции размером ¡1. Размер популяции! в ГП обычно составляет несколько тысяч программ.

Предлагается следующая процедура ГП.

1. Инициализация. На этом этапе случайно генерируется популяция P(0), состоящая из i древовидных программ, причем корневой вершиной дерева всегда является функция, аргументы которой выбираются случайно из множеств function set terminal set.

, -должить. Если структура дерева становится сложной, то заранее устанавливается максимальная высота дерева, равная числу ребер дерева, которое содержит самый длинный путь от корневой вершины до некоторой концевой вершины. В экспериментах Koza максимальная высота дерева колеблется от шести, для популяции P(0), до 17 в более поздних популяциях P(t). Для обеспечения многообразия попу-P(0) Koza half-

ramping способ, согласно которому деревья разной высоты генерируются с одинаковой частотой. Правда, этот способ не лишен недостатка, связанного с не совсем случайным характером генерируемых деревьев, и в [7] предлагаются альтернативные методы "случайной" генерации деревьев начальной популяции P(0), причем

P(0) .

2. Оценка решений. На втором этапе оценивается fitness-функция каждой про-

P(0) .

, fitness-

, -fitness P(0).

3. Генерация но вой популяции. Этот этап принято разделять на следующие подэтапы.

3.1. Выбор операторов эволюции. Основными операторами ГП являются репродукция и кроссинговер, применяемые с вероятностью pr и pc соответственно, причем pr+pc=1 (чаще всего pr=0.1, pc=0.9).

3.2. Селекция и репликация. Данный этап моделирования выполняется по схемам, аналогичным ГА [8].

3.3. .

оператор репродукции, то эта программа копируется в новую популяцию. Для про-

( ),

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

При программной реализации на языке LISP кроссинговер сводится к обмену списками между двумя программами при сохранении синтаксической корректности вновь получаемых программ.

4. Проверка критерия остановки. Процедура ГП является итерационной и критерии ее остановки аналогичны критериям для обычных ГА.

Пример моделирования. В качеств е примера, иллюстрирующего рассмотренную процедуру, возьмем следующую проблему [9].

Проблема двух параллелепипедов. Пусть два параллелепипеда задаются шестью независимыми переменными L1,B1,H1,L2,B2,H2 и одной зависимой переменной D (объем параллелепипеда D= L1»B1»H1-L2»B2»H2). Пусть для получения корректных значений величины D установлены следующие стартовые условия:

1) terminal set T={ L1,B1,H1,L2,B2,H2};

2) function set F={+,-,*,%};

3) roh/itness-функция указывает абсолютную ошибку, определяемую разностью между действительным значением D и тем значением, которое получается

;

4) Ф*=ФГО;

5) выигрыш определяется числом случаев, когда сравниваемые величины D различаются менее, чем на 0.01;

6) ¡1 = 4000;

7) программа останавливается, если число выигрышей равно 10, либо tmax=51.

В результате моделирования эволюции для популяции P(0) лучшая fitness-функция имела значение 783, что соответствует следующей форме:

(*(-(-B1L2)(-B2H1))(+(-H1H1)(*(H1L1))) или H1L1(B1+H1-B2-L2).

, H2

и оно мало похоже на корректное решение. Далее, луч шие /i/ness-функции в популяциях P(1)-P(6) имели следующие значения: 778, 510, 138, 117, 53, 51. Лучшая

fitness, 4, 44, -

LISP- :

(-(-(*(*B1H1)L1)(*(*L2H2)B2))(%(+B1L1)(-(-L1B2)(+(+B2L2)(*L2B2)))))

или

B1H1L1-B2H2L2-(B1+L1)(L1-2B2-L2-L2B2).

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

(-(*(*B1H1)(L1)(*(*L2H2)B2)) ИЛИ LJBA-L2B2H2.

. -

правления исследований по ГП. К ним прежде всего следует отнести работы по так называемым автоматически определяемым функциям (ADF) [10, 11], идея которых состоит в повышении эффективности ГП за счет модульного построения программ, состоящих из главной программы и ADF-модулей, генерируемых в ходе

.

архитектура программы, чи ело ADF-модулей и параметры (ар^менты) ADF.

ADF ( , . .) ,

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

ADF -

, .

Вернемся к проблеме двух параллелепипедов и приведем результаты моделирования эволюции с использованием ADF. Определим, что число ADF равно единице (ADF0), а число аргументов равно трем (ARG0,ARG1,ARG2). Тогда множества terminal set и function set соответственно равны { L1,B1,H1,L2,B2,H2} и {+,-

,*,%,ADF0}, а множества terminal set и function set для ADF0 имеют, соответствен-

но, вид { ARG0,ARG1,ARG2} и {+,-,*,%}. Лучшая из 4000 случайно сгенерированных программ популяции P(0) имела значение fitness, равное 1142, что соответст-LISP- , . 6 -

fitness 1101 96,

:

BjHjLj - L2B2H2 + L - 1 + H2.

P(7) fitness

96, . , 13-

получена корректная программа.

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

ADF. ,

примеров, свидетельствующих об обратном. Рассмотрим один из них.

Проблема проверки на четность 5. Эта проблема имеет следующую формулировку. Пусть булева функция, зависящая от пяти аргументов (D0,D1,D2,D3,D4) принимает значение True, если четное число аргументов (включая нуль) принимают значение True, в противном случае, булева функция принимает значение NIL (константа, обозначающая список, в котором нет ни одного элемента). 32 возможных комбинации аргументов служат основой для /itness-oцeнки ГП с ADF и без ADF.

Для ГП без ADF устанавливаются следующие начальные условия и парамет-:

1) terminal set T={D0,D1,D2,D3,D4};

2) function set F={AND,OR,NAND,NOR};

3) rohfitness-§ymnxm определяется числом совпадений значений исходной функции со значениями, выдаваемыми ГП;

4) Ф^=32-Фго;

5) 1 = 16000;

6) , 32.

ADF.

Результаты моделирования однозначно свидетельствуют о преимуществе ГП ADF , -

.

Другим перспективным направлением в ГП считается вопрос о применении в качестве оператора поиска не только кроссинговера, но и мутации [12], а также реализацию ГП на транспьютерных вычислительных системах. С другой стороны, как показано в [13], существенное увеличение быстродействия ГП может быть получено и на последовательных машинах. В частности, реализация ГП на языке C увеличивает скорость ГП на два порядка, а реализация ГП в машинных кодах -примерно на три порядка в сравнении с LISP-реадизациями.

Авторы [13], исследуя решения различной длины, получаемые с помощью ГП, обратили внимание на так называемый эффект "компрессионного давления", которым обладают решения с малой структурной сложностью. Программы, генерируемые по методу ГП, как уже отмечалось выше, зачастую содержат "лишние" блоки, не влияющие на функциональные возможности программы и на ее fitness-значение. В генетике это соответствует понятию интрона, который является нечувствительным к кроссинговеру. С учетом этого в [13] вводится понятие эффектив-, ( ) сложности программы за вычетом величины интронов, содержащихся в программе. Принято считать, что применение кроссинговера носит деструктивный характер, если fitness-^^тащя ухудшается. Следовательно, для программы с относительно большим значением структурной сложности, но содержащей много интро-, . учетом этого, а также принимая во внимание известную scheme -теорему Холланда [6], .

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

Обозначим через Се (аО эффективную сложность программы at(i = 1,2,..., l),

через Са(аО абсолютную сложность программы а, через Pc - вероятность применения кроссинговера, а через Pd - вероятность того, что применение кроссинговера приведет к деструктивному эффекту, причем Pd=0, если кроссинговер проводится с

интроном. Пусть Ф(а^ - значение fitness-fyymoiym программы а Ф (t) -значение fitness-функций всех программ в популяции P(t). Если применяется пропорциональная селекция, то нижняя оценка Ai(t+1) "доли" программы ai в популяции P(t+1) примерно равна:

At (t+1)=At (t) • Ф(a)/Щ) • (1 - Pc • Ce (a )/(Ca (a) ■ pd) =

= (Ф(a.) - Pc • ф(a.) • Ce (a.)/Ca (a.) ■ pd )a. (t)/Ф(^)

Выражение в скобках представляет собой определение эффективной fitness:

ф e (^) = ф(^) - Pc • ф(at) • Ce (a)/Ca (a) • Pd,

которая соответствует вкладу программы ai в следующую популяцию P(t+1). Отсюда следует, что репродуктивные шансы некоторой программы ai тем выше, чем меньше отношение между эффективной и абсолютной сложностью программы. Достигнуть этого можно двумя путями.

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

1) на ранних этапах эволюции среднее значение fitness-^^тшут от популяции к популяции изменяется очень сильно, в то время, как Фе изменяется относи,

fitness;

2) fitness , , -

ти соотношение между эффективной и абсолютной сложностью, "компрессионное давление" также возрастает, и Фе уменьшается;

3)

программы за счет интронов, Фе остается на относительно низком уровне, среднее значение продолжает улучшаться, а деструктивное влияние кроссин-.

Теоретически обоснованное и эмпирически наблюдаемое явление "компрес"

решениям. В [11] предлагается ввести внешнее управление этим процессом с по-

D,

программы. С учетом этого выражение для Фе принимает вид:

Фe (ai ) = Ф(«г ) - D • Ca (ai ) - Pc • Ф(«г ) • Ce (ai ) / Ca (at ) • Pd •

Эмпирические исследования этого выражения показали, что подобного рода внешнее управление не решает всех проблем.

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

ЛИТЕРАТУРА

1. FriedbergR.M. A Learning machine// IBM J. research and development. 1958.V.2.

2. Fujiku C., Dickinson J. Using the genetic algorithm to generate LISP source code to solve the prisoners dilemma. Proceedings of the second inter. conf. on genetic algorithms. N.J.: Lawrence Erlbaum, 1987.

3. De Jong K. On using genetic algorithms to search program spaces// Proc. of the second inter. conf. on genetic algorithms. N.J.: Lawrence Erlbaum, 1987.

4. Koza J.R. Genetic Programming. Cambridge: MA:MIT Press, 1992.

5. Koza J.R. Genetic Programming 2. Cambridge: MA:MIT Press, 1994.

6. Holland J.H. Adaptation in natural and artificial systems. An Arbor : Uni of Michigan press, 1975.

7. Iba H. Random free generation for GP. PPSN 4, LNCS II41. Berlin: Springer, 1996.

8. Курейчик B.M. Еенетические алгоритмы. Таганрог.: Изд-во ТРТУ, 1998.

9. Родзин С.И. Отказоустойчивые вычислительные системы. Таганрог: изд-во ТРТУ. 2001.

10. Курейчик В.М., Родзин С.И. Эволюционные алгоритмы: генетическое программирование. Обзор// Известия РАН. Теория и системы управления. 2002. №1.

11. Nissen V. Einführung in evolutionäre algorithmen. Braunschweig: Vieweg, 1997.

12. Montana D.J. Strongly typed genetic programming// Evolutionary computation. 1995.

13. Nordin P., Banzhaf W. Evolving turing-complete programs for a register machine with selfmodifying code// Proc. of the sixth int. conf. on genetic Programming. San Francisko: Morgan Kaufmann, 1995.

14. Родзин (IM. Гибридные интеллектуальные системы на основе алгоритмов эволюционного программирования// Новости ИИ. 2000. №3.

УДК 681.3.001.63

Б.К. Лебедев1

СТРУКТУРА ХРОМОСОМ ПРИ КОДИРОВАНИИ СПИСКОВ,

СОДЕРЖАЩИХ ФИКСИРОВАННЫЕ ЧИСЛА НУЛЕЙ И ЕДИНИЦ

Разработка генетического алгоритма включает три основных компонента: разработка структуры, принципов кодирования и декодирования хромосом; разработка основных генетических операторов; разработка общей структуры генетического поиска [1,2].

Представление исходной формулировки задачи в виде трех компонент в очень большой степени определяют усилия, необходимые для ее решения [3,4].

Для некоторых задач решение полностью определяется списком, составленным из нулей и единиц М = < 0, 1, 1, 0, 0, 1>с фиксированным числом нулей - n0 и числом единиц - n1. С помощью списка М можно некоторое множество А, мощность которого \А I = n0 + n1 , разбить на два подмножества А1 и А2 та кие, что \A11 = n0, а IА2 I = n1.

Представим матрицу Р смежности (или инцидентности), задающей некоторый граф G, в виде набора строк Ri , R = (Ri | i = 1,2,3,.,.,n}, где Rt = (ry | j = 1,2,..., n }. Каждая строка Ri содержит фиксированное число нулей - n0 и число единиц - n1, n= n0 + n1. Путем последовательного объединения строк Ri матрица смежности R также представляется в виде списка R* с фиксированным числом нулей и единиц. Для представления неориентированных графов можно воспользоваться “треугольной” матрицей (той частью основной матрицы, которая располо-

), -1 n. “ ” - n1

, .

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

Будем использовать множество нулей в качестве опорного множества для кодирования списка М. Сформируем на базе опорного множества нулей множество позиций Р (рис.1), в которых могут располагаться единицы, образующие совместно с нулями список М. Если число нулей n0, то число позиций Р равно n0+ 1. Каждая из n1 единиц может быть расположена в любой из позиций pt е P = (pt / i = 1, 2, ..., (n0 + 1)}.

Всевозможным вариантам размещения единиц в позициях Р совместно с опорным множеством нулей соответствуют всевозможные списки М. Распределение единиц по позициям будем задавать с помощью списка Q, размер которого

1 Работа выполнена при поддержке РФФИ, гранты №01-01-000-44, 02-01-01-275

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