Московский государственный университет путей сообщения
Опубликован: 10.10.2014 | Доступ: свободный | Студентов: 865 / 190 | Длительность: 22:10:00
Лекция 10:

Эволюционное программирование

10.2. Конечный автомат в качестве генома

Итак, в классическом ЭП особь представляется в виде конечного автомата. В определенном смысле конечные автоматы являются подмножеством машин Тьюринга, которые являются базовой моделью в теории вычислительной сложности. На машине Тьюринга можно имитировать машину Поста, нормальные алгоритмы Маркова и любую программу для обычных компьютеров, преобразующую входные данные в выходные по какому-либо алгоритму. Конечные автоматы, конечно, не обладают такой "вычислительной мощностью", но они также способны решать достаточно сложные задачи.

Напомним, что конечный автомат является совокупностью шести объектов A=(Y,X,Z,\delta,\lambda,y_0),, где Y, X, Z - конечные множества состояний, входных и выходных сигналов соответственно; \delta:Y\times X\to Y- функция переходов, определяющая следующее состояние автомата; \lambda:Y\times X\to Z- функция выхода, определяющая выходной сигнал, y_0 – начальное состояние. Обычно автомат представляется таблицей или графом переходов-выходов.

Например, табл.10.1 представляет конечный автомат [1] с входным алфавитом из двух символов \{0,1\}, выходным алфавитом \{\alpha,\beta,\gamma\} и тремя состояниями (A,B,C). Здесь на пересечении строки (текущего состояния) и столбца (входного сигнала) приводятся следующее состояние и выходной сигнал автомата.

Кроме приведенной табличной формы автомат также часто представляется графом переходов и выходов. Для примера на рис.10.1 показан граф переходов – выходов автомата, представленного табл.10.1.

Таблица 10.1.
Y X
0 1
A B,\beta A,\beta
B B,\gamma C,\alpha
C B,\beta A,\gamma
Граф переходов-выходов

Рис. 10.1. Граф переходов-выходов

Очевидно, автомат на входную последовательность (в зависимости от текущего состояния) выдает некоторую выходную последовательность. Например, если автомат табл.10.1 находится в состоянии A, и на его вход поступает последовательность 0, 1, 1 , то он выдает выходную последовательность \beta,\alpha,\gamma. При этом входная последовательность моделирует воздействие окружающей среды, а выходная последовательность – реакцию на это воздействие. Таким образом, рассматриваются последовательности событий, которые отмечаются символами x_1,x_2,\dots,x_n, и алгоритм должен прогнозировать следующее событие x_{n+1} на основе известных предыдущих n символов (событий). Цель эволюции состоит в поиске особи, которая позволяет в каком-то смысле наилучшим образом решать данную проблему.

Таким образом, множество потенциальных решений составляет популяцию конечных автоматов. Как правило, автоматы имеют относительно небольшое число состояний. В процессе эволюции применяется оператор мутации (кроссинговер здесь не используется). Обычно используются пять возможных операторов мутации: изменение выходного сигнала (для данного перехода), изменение следующего состояния в переходе, изменение начального состояния, добавление одного состояния, удаление одного состояния. Вид операторов мутации выбирается случайным образом в соответствии с некоторым распределением вероятностей. При этом возможно применение не одного, а нескольких операторов мутации. Например, на рис.10.2 показан результат мутации автомата рис.10.1, где изменен выходной сигнал перехода из состояния C\stackrel{0/\beta}{\longrightarrow}B на C\stackrel{0/\alpha}{\longrightarrow}B.

Автомат-мутант

Рис. 10.2. Автомат-мутант

После применения мутации к текущей популяции, лучшие n особей переносятся в следующее поколение. Отметим, что в отличие от ГА (где сначала используется оператор отбора, а затем кроссинговер и мутация) в ЭП (также как и в ЭС) мутация применяется до отбора.

Рассмотрим особенности выполнения основных этапов алгоритма эволюции в эволюционном программировании.

  1. Инициализация. Начальная популяция состоит из m автоматов A_i=(Y_i,X_i,Z_i,\delta_i,\lambda_i,y_{0i}),i\in\{1,2,\dots,m\} , которые генерируются случайным образом. Число состояний в автоматах N_i=|Y_{i_i}| выбирается также случайным образом с равной вероятностью из множества \{1, 2, \dots,N_{\max}\}.

    Начальные состояния y_{0i} и переходы в следующее состояние присваиваются случайным образом в зависимости от числа состояний данного (случайного) автомата, как и выходные символы z_i из заданного конечного алфавита. При этом с каждым автоматом ассоциируется важный параметр \lambda_i, который представляет среднее число мутаций, применяемых к родительской особи при производстве потомков (мутантов). Обычно первоначально полагается \lambda_i=5, и счетчику поколений присваивается k=1.

  2. Фитнесс-функция. Вид фитнесс-функции существенно зависит от рассматриваемой проблемы (ее целевой функции) и для некоторых задач (прогнозирования и управления) будет описан ниже.
  3. Мутация. Каждый из родительских автоматов A_i мутирует и производит потомка A'_i путем применения (возможно нескольких) операторов мутации. В задачах прогнозирования их число M_i обычно определяется заранее экспериментальным путем. В экспериментах по управлению M_i получается в результате вероятностного эксперимента со случайной переменной, значения которой для потомка \lambda'_i определяются из значения параметра родителя \lambda_i согласно распределению Пуассона: \lambda'_i=\lambda_i+0.5N(0,1), где N(0,1) представляет распределение Гаусса с нулевым средним значением и единичной дисперсией. Если \lambda'_i или M_i превышает N_i или меньше 1, то им присваивается другое значение. Аналогично, если родительская особь имеет только одно состояние, то уменьшение числа состояний или назначение нового состояния запрещено. Используются следующие операторы мутации.
    • Добавление состояния: в родительский автомат добавляется новое состояние. Переходы из этого состояния и выходные сигналы назначаются случайным образом. Переходы в предшествующее состояние родительского автомата разрываются и перебрасываются в новое состояние, что повышает"активность" этого фрагмента автомата.
    • Удаление состояния: случайно выбирается одно из состояний родительского автомата и удаляется. Все переходы в это состояние случайным образом перебрасываются в оставшиеся состояния. Если удаляемое состояние было начальным, то случайным образом выбирается другое начальное состояние для нового автомата-"мутанта".
    • Изменение начального состояния: в родительском автомате случайно выбирается другое начальное состояние.
    • Изменение перехода: случайным образом выбранный переход перебрасывается в случайным образом выбранное состояние.
    • изменение выходного сигнала: в случайным образом выбранном переходе случайным образом изменяется значение выходного сигнала на другое значение из заданного алфавита.

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

  4. Оценка фитнесс-функции: для каждого "мутанта" (вновь порожденного потомка) выполняется оценка значения фитнесс-функции. Как отмечалось, вид фитнесс-функции существенно зависит от задачи и ниже приведены некоторые наиболее распространенные типы.
  5. Отбор родителей: для популяции с числом особей меньше десяти особи сортируются согласно их значениям фитнесс-функции и лучшая половина особей используется для генерации следующего поколения. Для больших популяций обычно используется турнирный отбор родителей. Часто применяется попарное сравнение между множеством родителей \{P_i\}\forall i\in\{1,\dots,m\} и потомков \{P'_i\}\forall i\in\{1,\dots,m\}. Последующий выбор особей производится с равной вероятностью из множества родителей и потомков. Потомок признается победителем, если он имеет ошибку прогнозирования не больше, чем у конкурирующей особи. При этом в качестве родителей для генерации следующего поколения отбирается m особей-победителей
  6. Процедура заканчивается при выполнении критерия останова, в противном случае наращивается номер поколения k=k+1 и осуществляется переход на шаг 3 алгоритма эволюции. Для прогнозирования часто число поколений ограничивается сверху (k=5).