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

Дифференциальная эволюция

Дифференциальная эволюция — это метод стохастической оптимизации, относящийся к классу эволюционных алгоритмов. Он предназначен для поиска глобального экстремума (минимума или максимума) вещественнозначных, многомерных и, как правило, нелинейных функций, которые могут быть недифференцируемыми, разрывными или зашумлёнными. Метод был предложен Райнером Сторном и Кеннетом Прайсом в 1995 году и с тех пор стал одним из наиболее широко используемых эвристических алгоритмов благодаря своей простоте, эффективности и небольшому числу управляющих параметров.

История возникновения

Разработка дифференциальной эволюции (ДЭ) началась в середине 1990-х годов, когда Райнер Сторн (Университет Калифорнии, Беркли) и Кеннет Прайс (независимый исследователь) работали над задачей подбора коэффициентов полиномов Чебышёва для решения задач аппроксимации. Традиционные методы, такие как симплекс-метод Нелдера — Мида или генетические алгоритмы, демонстрировали недостаточную сходимость на сложных мультимодальных ландшафтах. В 1995 году на конференции IEEE по эволюционным вычислениям была представлена первая версия алгоритма, а в 1997 году вышла фундаментальная статья «Differential Evolution — A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces», заложившая теоретические основы метода.

Первоначально ДЭ применялась в основном в задачах цифровой обработки сигналов и нейросетевого обучения, но к началу 2000-х годов область её использования значительно расширилась, охватив биоинформатику, химическое проектирование, финансовое моделирование и робототехнику.

Основные принципы и механизм работы

Дифференциальная эволюция, как и другие эволюционные алгоритмы, имитирует процессы естественного отбора. Однако её ключевое отличие заключается в способе генерации новых решений-кандидатов (особей): мутация выполняется не с помощью случайного изменения координат, а путём вычисления разности между двумя случайно выбранными особями из популяции. Эта разность, масштабированная на коэффициент, добавляется к третьей особи, образуя так называемый мутантный вектор.

Этапы алгоритма

  1. Инициализация: Создаётся начальная популяция из NP (размер популяции) векторов-кандидатов, каждый из которых представляет собой точку в D-мерном пространстве поиска. Координаты обычно задаются случайным образом в пределах допустимых границ.
  1. Мутация: Для каждой целевой особи \( x_i \) из текущего поколения формируется донорский вектор \( v_i \). Наиболее распространённая стратегия (DE/rand/1) выглядит следующим образом:

\[ v_i = x_{r1} + F \cdot (x_{r2} - x_{r3}) \] где \( x_{r1}, x_{r2}, x_{r3} \) — три различные случайно выбранные особи, не совпадающие с \( x_i \), а \( F \) — коэффициент масштабирования (обычно в диапазоне [0, 1]).

  1. Кроссовер (рекомбинация): Для создания пробного вектора \( u_i \) элементы донорского \( v_i \) и целевого \( x_i \) векторов смешиваются по правилу биномиального или экспоненциального кроссовера. В биномиальном варианте:

\[ u_{i,j} = \begin{cases} v_{i,j}, & \text{если } rand_j \leq CR \text{ или } j = j_{rand} \\ x_{i,j}, & \text{иначе} \end{cases} \] где \( CR \) — вероятность кроссовера, \( j_{rand} \) — случайный индекс, гарантирующий, что пробный вектор не будет точной копией целевого.

  1. Селекция: Пробный вектор \( u_i \) сравнивается с целевым \( x_i \) по значению целевой функции. Если \( u_i \) даёт лучшее (меньшее для задачи минимизации) значение, он заменяет \( x_i \) в следующем поколении; иначе \( x_i \) сохраняется.

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

Классификация и варианты

Существует несколько десятков модификаций дифференциальной эволюции, различающихся стратегией мутации и кроссовера. Наиболее известные обозначаются по схеме DE/x/y/z, где:

Популярные стратегии

ОбозначениеФормула мутацииОсобенности
DE/rand/1\( v = x_{r1} + F \cdot (x_{r2} - x_{r3}) \)Высокая диверсификация, медленная сходимость
DE/best/1\( v = x_{best} + F \cdot (x_{r1} - x_{r2}) \)Быстрая сходимость, риск преждевременной остановки
DE/current-to-best/1\( v = x_i + F \cdot (x_{best} - x_i) + F \cdot (x_{r1} - x_{r2}) \)Баланс между исследованием и эксплуатацией
DE/rand/2\( v = x_{r1} + F \cdot (x_{r2} - x_{r3}) + F \cdot (x_{r4} - x_{r5}) \)Усиленная диверсификация

Кроме того, разработаны адаптивные версии (jDE, SaDE, JADE), где параметры \( F \) и \( CR \) динамически изменяются в процессе эволюции, и гибридные алгоритмы, комбинирующие ДЭ с локальным поиском или другими метаэвристиками.

Основные параметры и их влияние

Эффективность дифференциальной эволюции критически зависит от настройки трёх параметров:

  1. Размер популяции (NP): Обычно выбирается от 5D до 10D (где D — размерность задачи). Слишком малая популяция ведёт к преждевременной сходимости, слишком большая — к избыточным вычислительным затратам.
  1. Коэффициент масштабирования (F): Определяет амплитуду возмущения. Значения 0,4–0,9 считаются стандартными. При \( F < 0,4 \) алгоритм склонен к локальной оптимизации, при \( F > 1 \) — к хаотичному поведению.
  1. Вероятность кроссовера (CR): Регулирует долю наследуемых признаков от мутантного вектора. Для сепарабельных функций (где переменные независимы) эффективны высокие CR (0,9–1,0), для несепарабельных — низкие (0,0–0,2).

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

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

Недостатки

Применение

Дифференциальная эволюция используется в самых разных областях, где требуется глобальная оптимизация:

В России дифференциальная эволюция применяется, в частности, в задачах аэродинамического проектирования (ЦАГИ), оптимизации режимов нефтедобычи (МФТИ, Сколтех) и в биоинформатических исследованиях (ИМПБ РАН).

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

Несмотря на широкую распространённость, дифференциальная эволюция не является универсальным решением. Исследования показывают, что на функциях с большим числом локальных минимумов (например, функция Гриванка) алгоритм может застревать в субоптимальных точках. Кроме того, отсутствие строгих теорем сходимости (за исключением некоторых частных случаев) заставляет разработчиков полагаться на эмпирические тесты. В 2020-х годах активно развиваются методы, устраняющие эти недостатки, в частности, путём интеграции ДЭ с алгоритмами роевого интеллекта или байесовской оптимизации.

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

Источники

  1. Storn R., Price K. Differential Evolution — A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces // Journal of Global Optimization. — 1997. — Vol. 11, No. 4. — P. 341–359.
  2. Price K., Storn R., Lampinen J. Differential Evolution: A Practical Approach to Global Optimization. — Springer, 2005. — 538 p.
  3. Das S., Suganthan P. N. Differential Evolution: A Survey of the State-of-the-Art // IEEE Transactions on Evolutionary Computation. — 2011. — Vol. 15, No. 1. — P. 4–31.
  4. Zhang J., Sanderson A. C. JADE: Adaptive Differential Evolution with Optional External Archive // IEEE Transactions on Evolutionary Computation. — 2009. — Vol. 13, No. 5. — P. 945–958.
  5. Карапетян А. Р., Семенкин Е. С. Эволюционные алгоритмы: теория и приложения. — Красноярск: СФУ, 2018. — 312 с.

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

На главную BFOmetr →