Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пакет прироста генетичек 2 / Мо Реферат2 ГА Соловьев_Ярославцева.docx
Скачиваний:
45
Добавлен:
03.06.2014
Размер:
1.38 Mб
Скачать

3.2. Оператор мутации.

Сразу после скрещивания на потомках применяется мутация, которая предназначена для внесения случайных изменений в хромосомы особей. Это позволяет алгоритму «выбираться» из локальных экстремумов и, тем самым, эффективнее охватывать пространство поиска. Так же, как и для оператора скрещивания, имеет смысл определить вероятность применения мутации pm. Рассмотрим различные операторы мутации в зависимости от способа кодирования генетической информации.

Целочисленное кодирование. В случае целочисленного кодирования мутация изменяет отдельные разряды в хромосоме. Для этого каждый разряд инвертируется с вероятностью pm. Ниже приведен пример мутации на псевдокоде:

ДЛЯ КАЖДОГО ПОТОМКА k ПОСЛЕ СКРЕЩИВАНИЯ

{

ДЛЯ КАЖДОГО i РАЗРЯДА В ХРОМОСОМЕ k

{

ЕСЛИ (PM > RANDOM)

{

БИТОВАЯ_МУТАЦИЯ (ОСОБЬ[k], i);

}

}

}

В силу того, что применение мутации разыгрывается столько раз, сколько разрядов содержится в хромосоме, значение pm выбирают небольшим, чтобы сильно не разрушать «хороший» генотип хромосом. Один из типичных вариантов pm = L–1, где L – длина хромосомы в битах, в этом случае каждая хромосома мутирует в среднем один раз.

Вещественное кодирование. Оператор мутации для вещественного кодирования изменяет содержимое каждого гена с вероятностью pm. При этом величина изменения выбирается случайно в некотором диапазоне [-; +], например, [-0,5; 0,5], и может иметь как равномерное, так и любое другое распределение, к примеру, нормальное с нулевым ожиданием и единичной дисперсией. Таким образом, пример мутации для вещественного кодирования на псевдоязыке выглядит следующим образом (RND – случайное число, распределенное по заданному закону):

ДЛЯ КАЖДОГО ПОТОМКА k ПОСЛЕ СКРЕЩИВАНИЯ

{

ДЛЯ КАЖДОГО i ГЕНА В ХРОМОСОМЕ k

{

ЕСЛИ (PM > RANDOM)

{

ОСОБЬ[k].ГЕН[i] = ОСОБЬ[k].ГЕН[i] + RND;

}

}

}

Для того чтобы избежать сильных изменений содержимого хромосомы в результате мутации значение вероятности pm выбирается небольшим, порядка 1÷10 %.

3.3. Оператор инверсии.

Инверсия встречается в некоторых модификациях ГА [4] и используется с той же целью, что и мутация. Он представляет собой инверсию только одного случайно выбранного бита хромосомы:

ДЛЯ КАЖДОЙ k ОСОБИ В ПОПУЛЯЦИИ

{

ЕСЛИ (PI > RANDOM)

{

БИТОВАЯ_МУТАЦИЯ (ОСОБЬ[k], RANDOM*ДЛИНА_ХРОМОСОМЫ_В_БИТАХ);

}

}

Схематически механизм инверсии представлен на рис. 19.

Рисунок 19. Пример работы инверсии для целочисленного кодирования

3.4. Оператор популяционного всплеска.

Если разница приспособленности наилучшей и наихудшей особей в популяции меньше определенного малого значения и это неравенство сохраняется в течение нескольких поколений, то говорят, что такая популяция выродилась. Говоря другими словами, алгоритм сошелся в окрестности какого-то предполагаемого минимума. В то же время операторы скрещивания, мутации и инверсии оказываются неспособны дать популяции свежий «генный материал». Во избежание такой ситуации, как правило, вводятся различные модификации, например оператор популяционного всплеска.

Принцип его действия такой: когда становится ясно, что популяция выродилась, случайным образом выбирается некоторое количество особей (обычно не более 50% популяции). Затем выбранные особи инициализируется случайными точками поискового пространства (см. разд. 5.1) и помещаются обратно в популяцию на свои места. Таким образом, алгоритм получает новых особей, среди которых, возможно, будут хорошие решения.