Вопрос 45: Кукушкин поиск (Cuckoo Search)
Алгоритм вдохновлен поведением кукушек, подкладывающих в свои яйца в гнезда других птиц.
В алгоритме CS каждое яйцо в гнезде представляет собой решение, а яйцо кукушки - новое решение. Цель заключается в использовании новых и потенциально лучших (кукушкиных) решений, чтобы заменить менее хорошее решения в гнездах. В простейшем варианте алгоритма в каждом гнезде находится по одному яйцу.
Положим, что речь идет о задаче глобальной безусловной оптимизации, в которой фитнес-функция подлежит максимизации. Алгоритм основан на трех следующих правилах: каждая кукушка откладывает одно яйцо за один раз в случайно выбранное гнездо; лучшие гнезда с яйцами высокого качества (высоким значением пригодности) переходят в следующее поколение; яйцо кукушки, отложенное в гнездо, может быть обнаружено хозяином с некоторой вероятностью и удалено из гнезда.
Схема алгоритма CS:
Инициализируем популяцию из хозяйских гнезд и кукушку, то есть определяем векторы и вектор начального положения кукушки .
Выполняя полеты Леви, находим новое положение кукушки
где - вектор размера шагов по соответствующим компонентам вектора ; - случайный вектор независимых вещественных случаиных чисел, распределенных по закону Леви.
Случайным образом выбираем гнездо и, если , заменяем яйцо в этом гнезде на яйцо кукушки, то есть полагаем .
С вероятностью удаляем из популяции некоторое число худших случайно выбранных гнезд (включая, быть может, гнездо ) и по правилам шага 1 строим такое же число новых гнезд.
Начальные положения гнезд и кукушки принимаем случайными, равномерно распределенными в некотором гиперпараллелепипеде. Обычно полагают все компоненты вектора одинаковыми и равными , где величина связана с масштабами области поиска. Основными свободными параметрами алгоритма являются константы, определяющие траекторию полетов Леви, и вероятность удаления гнезд .
Модификации
Известно несколько модификаций алгоритма CS. В каноническом алгоритме CS кукушка в своих полетах Леви никак не учитывает информацию о лучших найденных решениях. В модифицированном алгоритме поиска кукушки (Modified Cuckoo Search, MCS) компоненты вектора вычисляют по формуле вида
где - лучшее текущее гнездо, а - случайно выбранное гнездо . Так определенный вектор обеспечивает большую вероятность полета кукушки к гнездам, имеющим высокую приспособленность.
С другой стороны, в каноническом алгоритме CS вероятность и параметры полета Леви являются фиксированными константами. С целью диверсификации поиска для ранних поколений целесообразно использовать большие значения величин , . На завершающих итерациях для повышения точности локализации экстремума разумны меньшие значения указанных величин. Улучшенный алгоритм поиска кукушки (Improved Cuckoo Search, ICS) использует динамические значения параметров , :
Здесь , , , - заданные константы.