Россия, Волгоградская область |
Генетическое программирование
6.5. Мутация в генетическом программировании
После выполнения кроссинговера с заданной малой вероятностью выполняется мутация для выбранной одной особи-программы.
6.5.1. Выполнение мутации на древовидных структурах
Для деревьев используются следующие операторы мутации (ОМ):
- узловая;
- усекающая;
- растущая.
Узловая мутация выполняется следующим образом:
- выбрать случайным образом узел, подлежащий мутации, определить его тип;
- случайным образом выбрать из соответствующего множества вариантов узлов, отличный от рассматриваемого узла;
- поменять исходный узел на выбранный.
Усекающая мутация производится так:
- определяется или выбирается узел;
- случайным образом выбирается терминальный символ из заданного множества;
- обрезается ветвь узла мутации;
- вместо обрезанной ветви помещается выбранный терминальный символ.
На рис.6.12 показан пример выполнения усекающей мутации.
Растущая мутация выполняется следующим образом:
- определяется узел мутации;
- если узел нетерминальный, то необходимо отсечь ветви, исходящие из него, иначе выбрать другой узел;
- вычислить размер (сложность) остатка дерева;
- вместо отсеченного дерева вырастить случайным образом новое дерево так, чтобы размер нового построенного дерева не превышал заданный порог.
Это очень мощный оператор, который обладает большими возможностями. На рис.6.13 представлен пример выполнения этого оператора. В некоторых работах растущая мутация выполняется с использованием формальных грамматик. При этом нетерминальный символ заменяется в соответствии с правилами грамматики, а не случайным образом.
В настоящее время для древовидных структур в ГП разработаны различные типы мутаций, которые производят различные изменения и представлены в табл.6.6 [5].
Для примера на рис.6.14 представлен результат выполнения мутации - перестановки (аргументов) для дерева, представляющего выражение .
Наименование | Описание производимых действий |
---|---|
Точечная мутация | Случайное изменение типа одного узла из того же класса |
Перестановка | Перестановка аргументов одного узла |
"Подъем" | Случайная генерация новой особи из поддерева |
Растущая мутация | Замена терминального символа случайным поддеревом |
Секущая мутация | Замена поддерева случайным терминальным символом |
Мутация поддерева | Замена поддерева случайным поддеревом |
6.5.2. Выполнение мутации на линейных структурах
Здесь мутация выполняется совершенно другим способом. Прежде всего, из линейного сегмента (тела программы) случайно выбирается оператор (команда) и в нем производятся изменения одного из следующих видов:
- имя переменной (или регистра) заменяется на другое случайным образом выбранное из заданного множества;
- оператор может быть также изменен случайным образом на некоторый другой из функционального множества;
- может быть случайно изменено значение константы на некоторое другое значение из заданного диапазона.
Мутация констант выполняется путем стандартного отклонения от текущего значения , где -текущее значение, -случайное число и –шаг мутации. При этом вероятность мутации обычно убывает по мере удаления от начала процесса.
6.5.3. Выполнение мутации на графоподобных структурах
В этом случае оператор мутации случайным образом выбирает множество узлов и изменяет либо узел линейной программы, либо узел ветвления, либо число исходящих из условного оператора ветвей. То есть ОМ не строит новые линейные последовательности. Измененная ОМ программа помещается назад в популяцию.