- Дифференциальная эволюция
-
Дифференциа́льная эволю́ция (англ. differential evolution) — метод многомерной математической оптимизации, относящийся к классу стохастических алгоритмов оптимизации (то есть работает с использованием случайных чисел) и использующий некоторые идеи генетических алгоритмов.
Это прямой метод оптимизации, то есть он требует только возможности вычислять значения целевой функций, но не её производных. Метод дифференциальной эволюции предназначен для нахождения глобального минимума (или максимума) недифференцируемых, нелинейных, мультимодальных (имеющих, возможно, большое число локальных экстремумов) функций от многих переменных. Метод прост в реализации и использовании (содержит мало управляющих параметров, требующих подбора), легко распараллеливается.
Метод дифференциальной эволюции был разработан Рэйнером Сторном и Кеннетом Прайсом, впервые опубликован ими в 1995 году[1] и развит в дальнейшем в их более поздних работах.[2][3]
Алгоритм
В его базовом виде алгоритм можно описать следующим образом. Изначально генерируется некоторое множество векторов, называемых поколением. Под векторами понимаются точки -мерного пространства, в котором определена целевая функция , которую требуется минимизировать. На каждой итерации алгоритм генерирует новое поколение векторов, случайным образом комбинируя векторы из предыдущего поколения. Число векторов в каждом поколении одно и то же и является одним из параметров метода.
Новое поколение векторов генерируется следующим образом. Для каждого вектора из старого поколения выбираются три различных случайных вектора , , среди векторов старого поколения, за исключением самого вектора , и генерируется так называемый мутантный вектор (mutant vector) по формуле:
где — один из параметров метода, некоторая положительная действительная константа в интервале [0, 2].
Над мутантным вектором выполняется операция «скрещивания» (crossover), состоящая в том, что некоторые его координаты замещаются соответствующими координатами из исходного вектора (каждая координата замещается с некоторой вероятностью, которая также является еще одним из параметров этого метода). Полученный после скрещивания вектор называется пробным вектором (trial vector). Если он оказывается лучше вектора (то есть значение целевой функции стало меньше), то в новом поколении вектор заменяется на пробный вектор, а в противном случае — остаётся .
Примеры практических приложений
Поисковая система Яндекс использует метод дифференциальной эволюции для улучшения своих алгоритмов ранжирования. [4][5]
Примечания
- ↑ Storn, Rainer and Price, Kenneth. Differential Evolution — A Simple and Efficient Adaptive Scheme for Global Optimization over Continuous Spaces, Technical Report TR-95-012, ICSI, March 1995.
- ↑ Storn, Rainer and Price, Kenneth. Differential Evolution — A Simple and Efficient Heuristic for Global Optimization over Continuous Spaces. (1997)
- ↑ K. Price, R. Storn, J. Lampinen. Differential Evolution: A Practical Approach to Global Optimization. Springer, 2005.
- ↑ Интервью А. Садовского журналу «IT СПЕЦ», Июль 2007.
- ↑ А. Гулин и др. Яндекс на РОМИП’2009. Оптимизация алгоритмов ранжирования методами машинного обучения.
Внешние ссылки:
- Описание и реализации метода на сайте одного из его авторов.
- S. Luke. Essentials of Metaheuristics. Глава 3.4.
Методы оптимизации Одномерные Метод золотого сечения • Дихотомия • Метод парабол • Перебор по сетке • Метод Фибоначчи • Троичный поиск Прямые методы Метод Гаусса • Метод Нелдера — Мида • Метод Хука — Дживса • Метод конфигураций • Метод Розенброка Первого порядка Градиентный спуск • Метод Зойтендейка • Покоординатный спуск • Метод сопряжённых градиентов • Квазиньютоновские методы • Алгоритм Левенберга — Марквардта Второго порядка Метод Ньютона • Метод Ньютона — Рафсона Стохастические Метод Монте-Карло • Имитация отжига • Эволюционные алгоритмы • Дифференциальная эволюция • Муравьиный алгоритм • Метод роя частиц Методы линейного
программированияСимплекс-метод • Алгоритм Гомори • Метод эллипсоидов • Метод потенциалов Методы нелинейного
программированияПоследовательное квадратичное программирование Категории:- Алгоритмы оптимизации
- Метод Монте-Карло
- Эволюционные алгоритмы
Wikimedia Foundation. 2010.