Генетическое программирование
6.2.4. Другие формы представления программ.
Кроме рассмотренных трех форм представления, в настоящее время предложены многочисленные модификации и обобщения ГП, в которых разработаны различные формы представления особей и определены на них соответствующие генетические операторы кроссинговера и мутации. В табл.6.3 приведены основные структуры, используемые в настоящее время в ГП [8].
В работе [9] для представления программ введены более сложные структуры в узлы дерева. Этот подход основан на хорошо известном методе группового учета аргументов (МГУА) Ивахненко, который широко используется при решении многих задач. При этом внутренние узлы дерева соответствуют полиномам второго порядка, которые используются в МГУА. Далее на указанных древовидных структурах определяются генетические операторы кроссинговера и мутации. При этом обычно используется локальный поиск и замена функций – процедура "переразметки", которая применяется для нахождения оптимальных значений параметров при заданной структуре. При определении фитнесс-функции здесь часто используют кратный (множественный) регрессионный анализ. Иногда используются и другие меры, например, сложность особи (к примеру, минимальная длина) или их комбинация.
Клеточное кодирование [10] также использует структуру графов, которые широко используются в компьютерных науках (для описания электрических цепей, нейронных сетей, конечных автоматов и т.п.), и поэтому область применения такого представления достаточно широкая (в частности, структурный синтез). Основная идея заключается в том, что фенотип отделяется от генотипа, который основан на древовидной структуре. С другой стороны фенотип представляется структурой (возможно циклического) графа. Генотип представляется грамматическим деревом (разбора), использующим правила грамматического вывода. При этом используются древовидные грамматики, в которых при грамматическом выводе нетерминальный символ заменяется соответствующим деревом. Эти операции выполняются параллельно подобно -системам [11]. Клеточное кодирование позволяет определить модули, которые последовательно могут применяться в различных участках грамматического дерева.
Структура | Описание |
---|---|
-выражение | Древовидная структура |
Основана на методе группового учета аргументов (МГУА) | Древовидная структура |
Язык регистрового уровня (TB) | Линейная постфиксная запись |
Язык регистрового уровня (JB) | Линейная постфиксная запись |
Битовая | Линейные геномы |
Битовая | Машинные команды |
Абстрактные типы данных | Списки, очереди, стеки |
Правила продукций | Грамматики |
Клеточное кодирование | Древовидные грамматики |
Правила продукций | Графы |
Параллельные алгоритмы (PADO) | Графы |
Генетическое программирование на основе формальных грамматик предложено в работе [12]. Здесь используется очень общая форма ГП, которая основана на использовании теории формальных языков и грамматик. В процессе эволюции особей применяются контекстно-свободные грамматики, что позволяет преодолеть некоторые ограничения в теоретическом плане, характерные для классического ГП. Применение КС-грамматик гарантирует синтаксическую корректность потомков в процессе эволюции и позволяет определить простые и эффективные генетические операторы. Кроссинговер выполняется следующим образом. Случайным образом выбирается нетерминальный символ в грамматическом дереве первого родителя и затем производится поиск этого же нетерминала во втором родителе. Если во втором родителе этого нетерминала нет, то оператор не выполняется. Иначе производится обмен поддеревьев, соответствующих нетерминальным символам. Мутация выполняется путем "выращивания" грамматического дерева из случайным образом выбранного нетерминального символа. В дальнейших работах авторы допускают изменение продукций КС-грамматики в процессе эволюции для вывода лучших правил. Известны также работы, в которых используются и более общие контекстно-зависимые грамматики.
В работах [8,11] определено понятие -систем, которые первоначально были разработаны для моделирования структур биологических формаций или, в более общем контексте, развивающихся процессов. В этом подходе замена нетерминальных символов при "выращивании деревьев" выполняется параллельно. Это позволяет развиваться различным ветвям независимо друг от друга, как это имеет место в реальных сложных процессах. При этом целью эволюции является генерация -системы, множество продукций которой позволяет решать поставленную задачу. Таким образом, здесь в качестве особи выступает вся -система. Каждая -система оценивается после вывода грамматического дерева. Следует отметить, что такие особи не могут изменяться произвольным образом, а развиваются согласно правилам мета-грамматики.
Интересным является применение в ГП методов нечеткой (fuzzy) логики [9]. В частности, нечеткая логика может использоваться в адаптивном ГП для подстройки таких параметров как вероятности кроссинговера и мутации в процессе эволюции, что позволяет повысить эффективность. При этом используется коэволюция правил нечеткого контроллера, который управляет параметрами ГП.
Поиск решения на основе генетического программирования может быть реализован согласно алгоритму, блок-схема которого представлена на рис.1.1. Но, учитывая специфику кодирования особи, имеющую переменную длину и сложную структуру, реализация каждого этапа этого алгоритма имеет свои особенности, которые мы рассмотрим ниже.