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

Модификации генетических алгоритмов

3.9. Ниши в генетических алгоритмах

Для мультимодальных функций, которые имеют много экстремумов, часто представляет интерес найти не одно, а несколько экстремальных значений. С помощью стандартного ГА это трудно сделать, поскольку в процессе эволюции, как правило, благодаря "генетическому дрейфу" особи концентрируются в окрестности одного экстремума. Поэтому для поиска экстремумов мультимодальных функций были разработаны соответствующие методы.

Простейший из них основан на многократном запуске ГА на различных подмножествах пространства поиска решений. Показано [6], что, если все экстремумы имеют примерно одинаковую небольшую вероятность поиска (быть найденными), то число независимых запусков ГА должно быть

p\sum_{i=1}^p \frac{1}{i}\approx p(\gamma+\log p) ( 3.16)

где p– число экстремумов и \gamma\approx 0,577 - константа Эйлера. К сожалению, в большинстве реальных задач экстремумы не являются равновероятными и поэтому число запусков должно быть больше приведенной оценки. Возможна также параллельная реализация этого итеративного метода.

В [6] предложен наиболее известный метод для данной проблематики, который основан на разделении популяции на несколько подпопуляций. Основная идея состоит в том, что фитнесс-функция модифицируется таким образом, чтобы в случае, когда особи концентрируются вокруг экстремума, значение фитнесс-функции для них уменьшалось пропорционально числу особей в этой области. При этом модифицированное значение фитнесс-функции s_f(i) особи i, называемое разделенной фитнесс-функцией, определяется следующим образом

s_f(i)=\frac{f(i)}{m(i)} ( 3.17)

где f(i)значение исходной фитнесс-функции и m(i) называется счетчиком ниши. Для особи i величина m(i) вычисляется путем суммирования значений разделяющей функции sh(x) для особей всей популяции:

m(i)=\sum_{j=1}^N sh(d_{ij}) ( 3.18)

где d_{ij}- евклидово расстояние между двумя особями i и j. Разделяющая функция sh(d_{ij}) должна обладать следующими свойствами:

0\le sh(d_{ij})\le 1
для каждого d_{ij},

s(0)=1,
\lim_{d_{ij}\to \infty} s(d_{ij})=0 ( 3.19)

Одной из применяемых на практике функций, для которой эти условия выполняются, является следующая

sh(d_{ij})=\begin{cases}1-\left(\frac{d_{ij}}{\sigma_s}\right)^\alpha,&\text{если $d_{ij}<\sigma_s$}\\0,&\text{в противном случае.}\end{cases} ( 3.20)

Здесь \alpha и \sigma_s являются константами. Наибольшие трудности в этом методе вызывает выбор значения \sigma_s, который требует априорного знания числа экстремумов функции, что, как правило, заранее неизвестно.

Например, в программе FlexTool [4] \sigma_s=0,5*q^{-\frac{1}{p}}, где q полагается равным примерному числу экстремумов. Значение \omega часто полагают равным 1, что означает одинаковую степень соучастия соседних особей. Таким образом, функция sh(d_{ij}) определяет уровень близости и степень соучастия для каждой особи в популяции. Если особь находится в своей нише в одиночестве, то s_f(i)=f(i). В противном случае значение модифицированной фиттнесс-функции уменьшается пропорционально количеству и степени близости соседствующих хромосом. При этом увеличение количества похожих друг на друга хромосом в одной нише ограничено, поскольку такое увеличение ведет к уменьшению значения фитнесс-функции таких особей.

Имеются различные модификации этого метода. Например, расстояние d_{ij} между особями иногда определяются не на уровне фенотипа (евклидово расстояние), а на уровне генотипа, где используется расстояние Хэмминга между двоичными кодами хромосом.

В работе [4] приведено сравнение параллельных и последовательных методов обработки ниш. Параллельные методы формируют и сохраняют ниши одновременно с популяцией. Последовательные методы обрабатывают различные ниши в разные моменты времени. Как правило, по эффективности параллельные методы превосходят последовательные.