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

Алгоритм светлячков

Алгоритм светлячков (англ. Firefly Algorithm, FA) — это метаэвристический алгоритм роевого интеллекта, предназначенный для решения задач глобальной оптимизации. Алгоритм был разработан в 2008 году британским учёным Синь-Шэ Яном (Xin-She Yang) и вдохновлён поведением светлячков, которые используют биолюминесценцию для привлечения партнёров и коммуникации. Основная идея метода заключается в моделировании движения особей (агентов) к более ярким источникам света, что соответствует поиску оптимального решения в многомерном пространстве параметров.

Принцип работы

Алгоритм основан на трёх идеализированных правилах, сформулированных Яном:

  1. Все светлячки являются однополыми, поэтому каждый из них может привлекать любого другого.
  2. Привлекательность (аттрактивность) светлячка пропорциональна его яркости (интенсивности света). Для двух светлячков менее яркий (с меньшей интенсивностью) будет двигаться к более яркому. Если два светлячка имеют одинаковую яркость, они движутся случайным образом.
  3. Яркость светлячка определяется значением целевой функции (фитнес-функции) в его текущем положении. В задачах максимизации яркость прямо пропорциональна значению функции; в задачах минимизации — обратно пропорциональна.

Математическая модель

Положение каждого светлячка в пространстве решений описывается вектором \( \mathbf{x}_i \). Интенсивность света \( I_i \) в точке \( \mathbf{x}_i \) обычно приравнивается к значению целевой функции \( f(\mathbf{x}_i) \). Однако при распространении в среде свет ослабевает с расстоянием, поэтому воспринимаемая интенсивность \( I_{ij} \) для светлячка \( i \) от светлячка \( j \) рассчитывается по закону обратных квадратов с учётом коэффициента поглощения среды \( \gamma \):

\[ I_{ij} = I_j \cdot e^{-\gamma r_{ij}^2} \]

где \( r_{ij} = ||\mathbf{x}_i - \mathbf{x}_j|| \) — евклидово расстояние между светлячками \( i \) и \( j \).

Привлекательность \( \beta \) светлячка пропорциональна воспринимаемой интенсивности и определяется аналогично:

\[ \beta_{ij} = \beta_0 \cdot e^{-\gamma r_{ij}^2} \]

где \( \beta_0 \) — привлекательность на нулевом расстоянии (обычно \( \beta_0 = 1 \)).

Движение светлячка \( i \) к более яркому светлячку \( j \) описывается формулой:

\[ \mathbf{x}_i^{t+1} = \mathbf{x}_i^t + \beta_0 \cdot e^{-\gamma r_{ij}^2} \cdot (\mathbf{x}_j^t - \mathbf{x}_i^t) + \alpha \cdot \epsilon_i \]

где:

Первое слагаемое сохраняет текущее положение, второе — направляет светлячка к более яркому соседу, третье — добавляет стохастическую компоненту для исследования пространства.

Параметры алгоритма

Эффективность алгоритма светлячков существенно зависит от настройки трёх ключевых параметров:

Варианты и модификации

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

Применение

Благодаря простоте реализации и эффективности, алгоритм светлячков нашёл применение в различных областях науки и техники:

Инженерные задачи

Компьютерные науки

Энергетика и экономика

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

Алгоритм светлячков часто сравнивают с другими методами роевого интеллекта, такими как алгоритм роя частиц (PSO) и алгоритм кукушки (CS). Основные отличия:

Исследования показывают, что FA эффективен для многоэкстремальных функций с большим числом локальных оптимумов, но уступает некоторым алгоритмам на гладких унимодальных задачах.

Критика и ограничения

Несмотря на популярность, алгоритм светлячков подвергается критике за некоторые недостатки:

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

Источники

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

На главную BFOmetr →