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

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

10.7. Самоадаптация

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

  • Аддитивные методы. Первый аддитивный метод предложен Фогелем [21], где x'_{ij}=x_{ij}(t)+\sqrt{\beta_{ij}(t)f(x_i)+\lambda_{ij}+N_{ij}(0,1)} и \eta- коэффициент обучения. В первых приложениях использовались значения \eta=1/6. Если \sigma_{ij}\le0, то \sigma_{ij}=\gamma, где \gamma- малая положительная константа.

    Второй аддитивный метод [9] также предложен Фогелем, где \sigma_{ij}(t+1)=\sigma_{ij}(t)+\sqrt{f_{\sigma}(\sigma_{ij}(t))}N_{ij}(0,1), где f_{\sigma}(a)=\left\{\begin{array}{rcl}a&\mbox{если}&a>0\\\gamma &\mbox{если}&a\le 0\end{array}\right\}. \sigma_{ij}\le0

  • Мультипликативные методы, где \sigma_{ij}(t+1)=\sigma(0)(\lambda_1e^{-\lambda_2\frac{t}{n_t}}+\lambda_3 и \lambda_1,\lambda_2,\lambda_3- управляющие параметры и n_t- максимальное количество итераций
  • Методы на основе логарифмически нормального распределения [21],где
    \sigma_{ij}(t+1)=\sigma_{ij}(t+1)e^{(\tau N_i(0,1)+\tau'N_{ij}(0,1))}, ( 10.1)
    \tau'=\frac{1}{\sqrt{2\sqrt{n_x}}},\tau=\frac{1}{\sqrt{2n_x}}.

    При этом потомок производится следующим образом:

    x'_{ij}(t)=x_{ij}(t)+\sigma_{ij}(t)N_{ij}(0,1).

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

  • Робастное ЭП предложено в [22], здесь представление каждой особи расширяется до вектора из n_{\sigma} параметров (x_o(t),\sigma_{i0},\dots,\sigma_{ik},\dots,\sigma_{in_{\sigma}}), где \sigma_{i0} вектор параметров, получаемых в результате применения трех операторов мутации следующим образом:
    1. Дупликация, где

      \sigma'_{i0j}(t)=\sigma_{i0j}(t)\\\sigma'_{ilj}(t)=\sigma_{i(l-1)j}(t)

      для i\in \{1,2,\dots,n_{\sigma}\}. Затем выполняется самоадаптация путем применения формулы (10.1) для \sigma_{ikj}(t) для k=0,1,\dots.n_{\sigma}.

    2. Устранение, где

      \sigma'_{i(l-1)j}(t)=\sigma_{ilj}(t)\\\sigma_{in_{\sigma}j}(t)=\min\left\{\sigma_{\max}(t),\sum_{k=0}^{n_{\sigma}-1}\sigma_{ikj}(t)\right\}

      для i\in \{1,2,\dots,n_{\sigma}\}. Далее производится самоадаптация путем применения формулы (10.1) для \sigma_{ikj}(t) для k=0,1,\dots.n_{\sigma}.

    3. Инвертирование, где

      \sigma'_{i0j}(t)=\sigma_{ilj}(t)\\\sigma'_{ilj}(t)=\sigma_{i0j}(t)

      для i\in \{1,2,\dots,n_{\sigma}\}. Затем также применяется формула (10.1) к \sigma_{i0j}(t) и \sigma_{ilj}(t) соответственно.

После выполнения приведенных операторов мутации порождается потомок путем использования выражения x'_{ij}(t)=x_{ij}(t)+\sigma_{i0j}(t)C(0,1).

Аналогичным образом, Фогель [23] предложил векторную самоадаптацию, где на каждой итерации перед генерацией потомка вектор параметров с вероятностью p_{\sigma} изменяется на один из оставшихся n_{\sigma}-1 векторов. Здесь важно определить лучшие значения для n_{\sigma} и p_{\sigma}, которые являются проблемно- зависимыми.

Отметим, что при самоадаптации в ЭП сначала генерируется потомок, а затем изменяются значения параметров. Это отличается от ЭС, где сначала изменяются значения параметров, а затем генерируются потомки. Порядок выполнения этих действий имеет существенное значение. Использование новых значений параметров в первом случае (ЭП) задерживается на одну итерацию.