Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы теории эволюционных вычислений. Научная монография

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
В результате замены создаётся новое дерево, хотя, с точки зрения эквивалентен родительской хромосоме
функционального
аспекта
,
созданный
.
потомок
Другими потенциально полезными унарными операторами репродукции для алгоритмов генетического программирования являются инкапсуляция, упаковка и лифтинг. Идея инкапсуляции состоит в выявлении полезных поддеревьев, не подлежащих уничтожению другими операторами репродукции в процессе эволюции (рис
. 13).
Инкапсуляция, как вспомогательная операция, особенно полезна в специальных приложениях, таких как эволюция искусственной нейронной сети [Рутковская
, 2004].
Рис
. 13.
Для проведения операции упаковки сначала на дереве выбирается поддерево с корневым нетерминальным узлом, из которого выходят несколько новых листьев, среди которых, по крайней мере, один является незанятым. Затем из исходного дерева вырезается выбранное поддерево, которое добавляется к одному из вновь созданных новых листьев. Пример оператора упаковки представлен на рис
Унарный оператор инкапсуляции
. 14.
121
Рис
. 14.
Унарный оператор упаковки
Оператор лифтинга является обратным оператору упаковки
Рис
. 15
иллюстрирует выполнение унарного оператора лифтинга
Рис
. 15.
Унарный оператор лифтинга
Концепция автоматически определяемых функций предложенная в алгоритмов использования
[Koza, 1992],
генетического
ADF
заключается в стремлении повысить
обеспечивает модульность
программирования
эффективность алгоритмов ГП за счет модульного построения
(ADF),
.
Идея
.
.
программ, состоящих из главной программы и генерируемых в ходе моделирования эволюции. В качестве
ADF-
модулей
ADF,
как правило, используются корневые и нетерминальные вершины дерева. Структура программы с параметры каждой
ADF
определяются до начала эволюции. Все
ADF,
число
ADF-
модулей и
вершины данной структуры имеют свой номер, а список аргументов включает отдельные локальные переменные, которые определяются при вызове программы задание функции главной программы
Настройка
ADF (их
ADF.
Завершает установку общей
.
число, аргументы и т.п
.)
зависит от
решаемой задачи, имеющихся вычислительных ресурсов и
122
,
предварительного опыта
*
+
2
a
+
Х
7
4
3
*
b
a
Х
Фиктивный корень
f
(a) f(a, b)
.
Отметим также необходимость типизации вершин дерева, иначе при выполнении оператора кроссинговера могут быть синтезированы синтаксически некорректные решения
Предположим некоторой функции используются две
зависит от параметра а, функция рис
. 16
структуры с
представлен пример генотипа в виде древовидной
ADF1 и ADE2.
[Weise, 2008].
,
что целью является аппроксимация
y(x),
ADF
зависящей от переменной
функции
f1(a) и f2(a, b).
f2 − от
параметров
x. В
геноме
Функция
a и b. На
f1
Приведенная в качестве примера структура кодирует следующее математическое выражение
:
y(x) = f2 (4, f1(х)) * (f1(х) + 3),
где
f1(a) = a + 7, f2(a, b) = (-а) * b.
Следовательно
, y(x) ≡ ((−4)*(х + 7)) * ((х + 7) + 3).
y(x)
call f
2
call f
Рис
f
1
. 16.
f
f
1
1
Пример кодирования генотипа с
Дж. Коза впервые применил
ADF-
ADF
1
ADF
функции для поиска
ADF
символьной регрессии. В более поздних работах были приведены примеры их применения для целого ряда других важных задач
2
,
таких как эволюция поведения агента электрических схем, эволюция поведения роботов и др. В работе
[
Курейчик
, 2002]
был
проведен
123
,
сравнительный
проектирование
анализ
алгоритмов генетического программирования с
ADF и
без
ADF.
Анализ показал, что для некоторых задач с точки зрения вычислительной трудоемкости и структурной сложности программ программирования без
преимущество за
ADF.
алгоритмами
генетического
Однако имеется целый ряд примеров, свидетельствующих об обратном: о преимуществе алгоритмов генетического программирования с
ADF,
как по структурной сложности решений, так и по их вычислительной трудоемкости
С позиций общей теории ЭВ идея использования
.
ADF-
функций может быть дополнена автоматически определяемыми макросами
Авторы
получаемые
(ADM)
для определения программного кода
[Nordin, 1995],
с
помощью
.
исследуя решения различной длины
алгоритмов
генетического программирования, обратили внимание на так называемый эффект
«
компрессионного давления
»,
которым обладают
,
решения с малой структурной сложностью. Это означает, что программы, генерируемые алгоритмом ГП, зачастую содержат
«
лишние» блоки, не влияющие на функциональные возможности программы и на значение её функции пригодности. В генетике это соответствует уже упоминавшемуся понятию интрона который является нечувствительным к кроссинговеру. С учетом этого в величина которой равна величине структурной
[Nordin, 1995]
вводится понятие эффективной сложности
(
абсолютной сложности программы за вычетом величины интронов содержащихся в программе. Принято считать, что применение кроссинговера носит деструктивный характер, если функция пригодности потомков
ухудшается
.
Следовательно
,
для программы с относительно большим значением структурной сложности деструктивного воздействия кроссинговера уменьшается
,
но содержащей много интронов
,
опасность
.
,
,
)
,
Проанализируем эту ситуацию с учетом приведённых ранее критических замечаний относительно теоремы Холланда Обозначим через С
(
а
е
эффективную сложность программы
i)
124
.
µ
=
а
i
ia
i
;
через
Pc –
),...,2,1(
;
через С
(ai)
a
абсолютную сложность программы
вероятность применения кроссинговера, а через
Pd –
вероятность того, что применение кроссинговера приведет к деструктивному эффекту, причем проводится с интроном
Пусть Ф
)(tΦ
−
среднее значение функций пригодности всех программ в
популяции
(ai) –
P(t).
Если применяется пропорциональная селекция
то нижняя оценка
P(t+1)
примерно равна
.
значение функции пригодности программы
Ai(t+1) «
доли» программы
Pd = 0,
если кроссинговер
ai,
ai в
популяции
))(/()(1()(/)()()1(
PaCaCPtatAtA
=⋅⋅−⋅ΦΦ⋅≅+
diaieciii
).(/)())(/)()()((
ttAPaCaCaPa
Φ⋅⋅Φ⋅−Φ=
idiaieici
Выражение в скобках представляет собой определение
эффективной функции пригодности
которая соответствует вкладу программы
,)(/)()()()(
PaCaCaPaa ⋅⋅Φ⋅−Φ=Φ
diaieiciie
ai в
следующую
,
популяцию некоторой программы
P(t+1).
Отсюда следует, что репродуктивные шансы
ai
тем выше, чем меньше отношение между эффективной и абсолютной сложностью программы Достигнуть этого можно двумя путями. Первый заключается в увеличении абсолютной сложности путем добавления интронов второй
– в
поиске простых решений. Имеющиеся эмпирические данные подтверждают приведенные выше соображения. Эти данные свидетельствуют о следующем
•
на начальных этапах работы алгоритма генетического
:
программирования среднее значение функции пригодности от популяции к популяции изменяется очень сильно, в то время как Ф
изменяется относительно медленно, между
e
тем репродуктивные свойства некоторой программы зависят прежде всего от значения ее функции пригодности
•
несколько позднее темп изменения среднего значения
;
.
,
функции пригодности популяции уменьшается, однако начинает расти соотношение между эффективной и
125
абсолютной сложностью, иными словами, возрастает
⋅⋅Φ⋅−⋅−Φ=
Φ
«
компрессионное давление
•
на
заключительных
», и
Фe уменьшается
этапах
работы
;
алгоритма генетического программирования экспоненциально растет абсолютная сложность программы за счет интронов, в то время как Ф
остается на относительно низком уровне
e
среднее значение функции пригодности популяции продолжает кроссинговера слабеет
улучшаться
,
а
деструктивное
.
влияние
Теоретически обоснованное и эмпирически наблюдаемое
явление
«
компрессии» таит в себе опасность преждевременной сходимости алгоритма генетического программирования к субоптимальным решениям. Если ввести внешнее управление этим процессом с помощью некоторого коэффициента
D,
пропорционального абсолютной сложности программы, то с учетом этого
.)(/)()()()()(
PaCaCaPaCDaa
diaieiciaiie
Эксперименты показывают, что подобного рода внешнее
,
управление не решает обозначенной проблемы
.
Кроме того, при выполнении большинства указанных операторов для репродукции необходимо выбирать узел дерева Это также проблемный вопрос алгоритмов генетического программирования. Возможно, этот вопрос не имеет большого теоретического значения, однако он играет важную роль с точки зрения практики. В литературных источниках чаще всего предлагается случайный выбор узла (для мутации, кроссинговера и др
.), но не
Древовидные отображения программированию
описывается, как именно это должно быть сделано
структуры
.
Другими
являются
− не
подходами
линейное
единственный
к
генетическому
генетическое
вариант
.
программирование, эволюционные грамматические правила основанные на графах параллельные распределенные алгоритмы генетического
программирования
,
алгоритмы
сетевого
.
,
генетического
программирования
126
,
алгоритмы
булевского
программирования
[Weise, 2008].
Несмотря на различие этих подходов с точки зрения общей теории ЭВ эти алгоритмы генетического программирования должны оцениваться с единых позиций
:
•
корректность алгоритмов
•
возможности
;
алгоритмов
программирования для решения
•
функциональность алгоритмов
NP-
трудных задач
.
генетического
;
Сформулируем рекомендации по решению указанных
проблем
.
При использовании генетических операторов возможна
ситуация
,
при
которой
созданная
программа
будет соответствовать некорректному выражению. В этом случае рекомендуется следующее
•
повторять кроссинговер, пока не будет получено
корректное дерево
:
;
•
добавить полученную программу в популяцию с нулевой
пригодностью
•
выполнять генетические операторы с экспрессией генов
;
которая заключается в том, чтобы с определенного места на дереве встречались только терминальные символы
(
впрочем, некорректность всё же может возникнуть, если
используются разные типы данных
).
С позиций общей теории ЭВ вопрос о корректности или некорректности синтезируемых программ должен обсуждаться на более фундаментальном уровне. В частности, в генетическом программировании
такую
характеристику
,
как
размер синтезируемой программы, вычислить нетрудно, в отличие от определения её алгоритмической разрешимости. Эта проблема была поставлена ещё Д. Гильбертом, а А. Чёрч и А. Тьюринг показали невозможность существования формальной процедуры
,
,
которая позволяла бы решать, выводимо ли данное высказывание из некоторого набора математических аксиом. Не существует общего
алгоритма
для
остановки
127
работы
алгоритмов
генетического
программирования
,
а
также
формальной процедуры тестирования для определения правильности работы синтезированной программы
.
Между тем функциональное тестирование программного
обеспечения
–
это важнейшая проблема в области программной инженерии. Предположим, что в процессе работы алгоритма генетического
программирования
была
синтезирована программа, которая в качестве входных данных получает два целых чисел
(32
бита) и обрабатывает их на выходе. Для полного тестирования этой программы по всем возможным входам потребуется провести
232 * 2
испытаний. Если частота на тест будет равна 1µ тестирования потребуется примерно для
большинства
практических
32
= 264 = 18 446 744 073 709 551 616
584 542
приложений
s, то
года. Понятно, что
для полного
входное пространство имеет гораздо большую размерность. Поэтому существует возможность выбора лишь очень малой части из возможных сценариев тестирования. Следовательно, нет никаких гарантий правильной работы программы во всех возможных ситуациях
.
Сформулируем с позиций общей теории ЭВ предложения о
возможностях
применения
алгоритмов
генетического программирования для решения некоторых практических задач задачи символьного регрессионного анализа, вейвлет-анализа распределения ресурсов и работ, оценки кредитного риска и др
.
Задачей символьного регрессионного анализа является
подбор математического выражения
,
наилучшим образом описывающего вычислительную модель для принятия решений В качестве исходных данных в задаче выступает совокупность имеющихся экспериментальных данных или экспертных знаний об
объекте
определенного свойства объекта
,
отражающих
неизвестную
Y
от другого свойства или
зависимость
: ,
.
параметра Х со случайной погрешностью, распределенной, как правило, по нормальному закону. По совокупности этих данных
128
требуется подобрать такую функцию
(
регрессию
),
которая
отображает зависимость
Y от Х с
минимальной погрешностью
.
Иными словами, задача символьной регрессии на практике
связана с необходимостью по модели
«
черного ящика
», в
которой зафиксированы отдельные входные и выходные связи объекта со средой, но отсутствует информация о внутренней структуре объекта, установить аппроксимирующую функцию объекта в аналитическом виде и определить численные значения ее
коэффициентов
идентификацией объекта
.
Иногда
.
этот
процесс
называют
Как применить ГП для решения задачи символьной регрессии полином имеет вид диапазоне
?
Пусть
[–1, 1].
,
например
Y = X2–X+2,
,
регрессионный квадратный
где
X
принимает значения в
Проблема состоит в том, чтобы автоматически создать компьютерную программу, реализующую данную регрессию
.
Для
программного
использовать математические операции сложения
(–),
умножения
(*) и
деления
вычисления
(%),
множество переменных Х, а
регрессии
(+),
будем
вычитания
также множество числовых констант из некоторого диапазона например, от сложности
–2 до +2.
,
автоматически
Оценку программ различной величины и
генерируемых
с
помощью генетических операторов, будем осуществлять в зависимости от того, насколько близки к целевому значению указанного полинома полученные программой результаты. Например, чем меньше среднеквадратичная ошибка, тем лучше программа. В качестве иллюстрации возьмем три случайных хромосомы представленных на рис
Например, структура, представленная на рис
. 17 в
виде древовидных структур
. 17 в
.
виде дерева слева, была образована путем случайного выбора операции вычитания в качестве корневой вершины дерева. Затем
,
,
случайно в качестве аргументов были выбраны операция деления
% и
константа
одна переменная Х. Программа реализует функцию
−1.
Для операции деления случайно была выбрана
129
Y1 = 2.
Аналогично были построены два других дерева, реализующих
Y2 = 2−X
функции
Y2 = 2−Х и Y3 =
– * +
Х
2
+ 2
соответственно
.
X
X
Y1 = 2
Рис
-1 %
. 17.
Древовидные структуры программ
-1 –
2 *
X X
Y3 = X2+2
X 1
На рис
трех случайно выбранных хромосом начальной популяции
(
область между кривыми на интервале
программы, реализующей функцию
1]
между параболической кривой графически иллюстрирует величину ошибки (величина интеграла абсолютной ошибки равна
. 18
представлены ошибки регрессии для каждой из
1,0).
[-1, 1]). В
Y1,
область на интервале
Y=
2
Х
-Х+2 и
Интеграл абсолютной ошибки
частности, для
прямой
[-1,
Y1
для прямой
-1 1 -1 -1
Y2
равен
4 4 4
Рис
. 18.
1,33, а
для параболы
Y3 – 1,0.
Ошибка регрессии для трех программ
1 1
В качестве критерия завершения ГП выберем достижение
ошибки не более
0,1.
После того, как установлено значение целевой функции пригодности каждой хромосомы, необходимо синтезировать программы-потомки. Произведем мутацию для
Y1
130
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]