Алгоритм Нелдера-Мида для отыскания экстремумов

Алгоритм Нелдера-Мида является широко известным и применяется в качестве алгоритма прямого поиска локального экстремума функций от 2 до 6 переменных. Особенностью алгоритма является продвижение к экстремуму целым облаком пробных точек, который условно назван симплексом. Общее число точек в симплексе равно увеличенному на единицу числу переменных поиска. Продвижение к экстремуму не по линии от одной точки к другой, а внутри какого-то множества пробных точек обеспечило не реагирование на мелкие дефекты целевой функции.

Вводимая информация:

n - число переменных минимизируемой функции;

Xо = (x1о,x2о,...,xnо) - точка первого начального приближения;

h - шаг регуляризации симплекса;

ex - погрешность нахождения экстремума по параметрам.

Работа алгоритма начинается с начальной подготовки симплекса точек. После выполнения процедур, регуляризация симплекса и расчет значения целевой функции во всех точках симплекса симплекс имеет вид:

1 x1o x2o x3o... x n o Q1

2 x1o+h x2o... x n o Q2

3 x1o x2o+h x3o ... x n o Q3

......

n+1 x1o x2o x3o... x n o+h Qn+1

Далее до выполнения условия окончания поиска осуществляются итерации (шаги) поиска.

Условием окончания поиска этого метода является неудаленность от лучшей точки симплекса остальных точек симплекса более, чем на ex.

Каждая итерация начинается с нахождения номеров l и k, соответственно лучшей и худшей по значению функции точек симплекса. Далее осуществляется расчет точки Хц - положения центра масс всех точек симплекса за исключением наихудшей точки l.

n+1

х = 1/n S xji,

j=1

где

n - количество точек в симплексе;

i - номер компоненты вектора X (i=1,2,...,n);

j - номер точки в симплексе.

Значение слагаемого суммы xkj допускается равным 0.

При работе метода на каждой из итерации может вычисляться одна из особых пробных точек: точка a - точка отражения, точка g - точка растяжения, точка b -точка сжатия. Точки вычисляются по формулам:

Хa = Xц+a*(Xцк), Хb = Xц+b*(Хцк), Хg = Xц+g*(Хцк).

Значения коэффициентов a=1, b=0.5 и g=2 подобраны экспериментальным путем.

После расчета точки Хц вычисляется пробная точка a. Далее выполняется одно из альтернативных действий.

Если Qa > Ql, то уже достигнут нормальный успех. В этом случае рассчитывается Xg и Qg (в надежде на сильный успех). Наилучшая из точек a или g записывается на место наихудшей k точки симплекса (конец итерации).

Если Ql < Qa < Qk, то имеется слабый успех, и точка a записывается на место k точки (конец итерации).

Если Qa ³ Qk, то успеха нет. Рассчитывается Xb и Qb.

Далее, если Qb < Qk, то точка b записывается на место k точки (конец итерации), иначе, если точка b хуже точки k, выполняется процедура редукции симплекса и процедура расчета значения функции в точках симплекса (конец итерации). При выполнении процедуры редукции симплекса все точки симплекса стягиваются к лучшей точке симплекса на половину своего прежнего удаления.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: