Вопрос 45: Кукушкин поиск (Cuckoo Search)


Алгоритм вдохновлен поведением кукушек, подкладывающих в свои яйца в гнезда других птиц.

В алгоритме CS каждое яйцо в гнезде представляет собой решение, а яйцо кукушки - новое решение. Цель заключается в использовании новых и потенциально лучших (кукушкиных) решений, чтобы заменить менее хорошее решения в гнездах. В простейшем варианте алгоритма в каждом гнезде находится по одному яйцу.

Положим, что речь идет о задаче глобальной безусловной оптимизации, в которой фитнес-функция подлежит максимизации. Алгоритм основан на трех следующих правилах: каждая кукушка откладывает одно яйцо за один раз в случайно выбранное гнездо; лучшие гнезда с яйцами высокого качества (высоким значением пригодности) переходят в следующее поколение; яйцо кукушки, отложенное в гнездо, может быть обнаружено хозяином с некоторой вероятностью ξa(0;1) \xi_a \in (0; 1) и удалено из гнезда.

Схема алгоритма CS:

  1. Инициализируем популяцию S=si,i[1:S] S = {s_i,i \in [1:|S|]} из S |S| хозяйских гнезд и кукушку, то есть определяем векторы Xi0 X_i^0 и вектор начального положения кукушки Xc X_c .

  2. Выполняя полеты Леви, находим новое положение кукушки

Xc=Xc+VLX(λ), X^\prime_c = X_c + V \otimes L_{|X|}( \lambda ),

где V=(vj,j[1:X]) V = (v_j, j \in [1: |X|]) - вектор размера шагов по соответствующим компо­нентам вектора X X ; LX(λ)(X×1) L_{|X|}( \lambda ) - (|X| \times 1) - случайный вектор независимых веще­ственных случаиных чисел, распределенных по закону Леви.

  1. Случайным образом выбираем гнездо sj,j[1:S] s_j, j \in [1:|S|] и, если φ(Xc)>φ(Xj) \varphi( X_c ) > \varphi( X_j ) , заменяем яйцо в этом гнезде на яйцо кукушки, то есть полагаем Xj=Xc X_j = X_c .

  2. С вероятностью ξa \xi_a удаляем из популяции некоторое число худших случайно выбранных гнезд (включая, быть может, гнездо sj s_j ) и по правилам шага 1 строим такое же число новых гнезд.

Начальные положения гнезд и кукушки принимаем случайными, равномерно распределенными в некотором гиперпараллелепипеде. Обычно полагают все компоненты вектора V V одинаковыми и равными v v , где величина v v связана с масштабами области поиска. Основными свободными параметрами алгоритма являются константы, определяющие траекторию полетов Леви, и вероятность удаления гнезд ξa \xi_a .

Модификации

Известно несколько модификаций алгоритма CS. В каноническом алгоритме CS кукушка в своих полетах Леви никак не учитывает информацию о лучших найденных решениях. В модифицированном алгоритме поиска кукушки (Modified Cuckoo Search, MCS) компоненты вектора V V вычисляют по формуле вида

V=U1(0;1)(XiXi1), V = U_1 (0;1)( X_{ i_\ast } - X_{ i_1 } ),

где Xi X_{ i_\ast } - лучшее текущее гнездо, а Xi1 X_{ i_1 } - случайно выбранное гнездо ii1 i_\ast \neq i_1 . Так определенный вектор V V обеспечивает большую вероятность полета кукушки к гнездам, имеющим высокую приспособленность.

С другой стороны, в каноническом алгоритме CS вероятность ξa \xi_a и параметры полета Леви являются фиксированными константами. С целью диверсификации поиска для ранних поколений целесообразно использовать большие значения величин ξa \xi_a , v v . На завершающих итерациях для повышения точности локализации экстремума разумны меньшие значения указанных величин. Улучшенный алгоритм поиска кукушки (Improved Cuckoo Search, ICS) использует динамические значения параметров ξa \xi_a , v v :

ξa(t)=ξamaxtt^(ξamaxξamin) \xi_a (t)=\xi_a^{ max }-\frac{t}{\hat{t}} (\xi_a^{ max }-\xi_a^{ min } )

v(t)=vmaxexp(dt),d=1t^ln(vminvmax) v(t)=v^{ max } exp(dt), d= \frac{1}{\hat{t}} ln( \frac{ v^{ min } }{ v^{ max } } )

Здесь ξamax \xi_a^{ max } , ξamin \xi_a^{ min } , vmax v^{ max } , vmin v^{ min } - заданные константы.

results matching ""

    No results matching ""