Открыть сервис

Алгоритм кукушки

Алгоритм кукушки (англ. Cuckoo search) — это метаэвристический алгоритм оптимизации, вдохновлённый гнездовым паразитизмом некоторых видов кукушек и их стратегией подкладывания яиц в чужие гнёзда. Алгоритм был предложен в 2009 году исследователями Синь-Шэ Яном (Xin-She Yang) и Субхашем Дебом (Suash Deb) как метод решения задач глобальной оптимизации, в том числе в условиях многомодальности и ограничений. Относится к классу популяционных алгоритмов, таких как генетические алгоритмы или роевой интеллект, и основан на сочетании случайных блужданий (полётов Леви) и отбора решений.

История

Идея алгоритма была впервые опубликована в 2009 году в статье «Cuckoo Search via Lévy Flights» на конференции IEEE по природо-вдохновлённым вычислениям. Ян и Деб предложили использовать поведение кукушек, которые подкладывают яйца в гнёзда других птиц, как метафору для поиска оптимального решения. Если хозяин гнезда обнаруживает чужое яйцо, он либо выбрасывает его, либо покидает гнездо — это соответствует отбрасыванию неоптимальных решений. Первоначально алгоритм тестировался на стандартных тестовых функциях (сфера, Розенброк, Растригин) и показал высокую эффективность по сравнению с генетическими алгоритмами и методом имитации отжига. В последующие годы алгоритм получил множество модификаций и применений в инженерных задачах, биоинформатике и планировании маршрутов.

Основные принципы

Алгоритм кукушки моделирует три ключевых аспекта поведения птиц:

  1. Гнездовой паразитизм: Каждая кукушка откладывает одно яйцо в случайно выбранное гнездо. В контексте оптимизации «яйцо» — это новое решение-кандидат, а «гнездо» — текущее решение в популяции.
  2. Элитизм: Лучшие решения (гнёзда с наиболее качественными яйцами) переходят в следующее поколение без изменений.
  3. Обнаружение и замена: Если хозяин гнезда с вероятностью \( p_a \) обнаруживает чужое яйцо (то есть новое решение оказывается хуже или равно текущему), гнездо заменяется новым случайным решением (или яйцо выбрасывается).

Ключевой особенностью является использование полётов Леви (Lévy flights) — типа случайного блуждания, при котором шаги имеют распределение с тяжёлыми хвостами (закон степени). Это позволяет алгоритму эффективно исследовать пространство поиска: короткие шаги обеспечивают локальную детализацию, а редкие длинные прыжки — выход из локальных оптимумов.

Алгоритм работы

Формально алгоритм можно описать следующим образом:

  1. Инициализация: Генерируется начальная популяция из \( n \) гнёзд (решений). Каждое решение представляет собой вектор параметров в пространстве поиска. Вычисляется целевая функция (пригодность) для каждого гнезда.
  2. Цикл поколений (итераций):

\[ X_{new} = X_i + \alpha \cdot \text{Lévy}(\lambda) \cdot (X_i - X_{best}) \] где \( \alpha \) — параметр масштаба (обычно \( \alpha = 0.01 \)), \( \text{Lévy}(\lambda) \) — случайная величина с распределением Леви (параметр \( \lambda \) обычно равен 1.5), \( X_{best} \) — лучшее решение в текущей популяции.

  1. Критерий остановки: Цикл повторяется до выполнения условия (например, достижение заданного числа итераций, точности или стагнации функции).

Параметры

Алгоритм имеет всего два основных параметра, что делает его простым в настройке:

Дополнительно может настраиваться параметр масштаба \( \alpha \) и показатель распределения Леви \( \lambda \), но в базовой версии они фиксированы.

Разновидности и модификации

За годы существования алгоритма было предложено множество его вариантов, направленных на улучшение сходимости или адаптацию к конкретным задачам:

Применение

Алгоритм кукушки применяется в широком спектре областей:

Преимущества и недостатки

Преимущества

Недостатки

Сравнение с другими алгоритмами

По сравнению с генетическими алгоритмами (ГА) алгоритм кукушки часто демонстрирует более быструю сходимость на начальных итерациях благодаря полётам Леви. В отличие от роя частиц (PSO), он не требует хранения индивидуальных лучших позиций. По сравнению с методом имитации отжига (SA), алгоритм кукушки использует популяционный подход, что увеличивает разнообразие решений. Однако на задачах с гладкими унимодальными функциями ГА или градиентные методы могут быть эффективнее.

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →