Скачиваний:
178
Добавлен:
15.06.2014
Размер:
672.39 Кб
Скачать

2.МЕТОДЫ НУЛЕВОГО ПОРЯДКА

2.1. Описание общего алгоритма методов покоординатного спуска.

Среди методов нулевого порядка можно выделить группу методов покоординатного спуска: методы Гаусса-Зейделя, Пауэлла, Дэвиса-Свена-Кемпи (ДСК), Розенброка.Алгоритм этих методов в общем одинаков и описывается следующим образом:

Задается начальная точка x0 и начальный шаг одномерного спуска h .

1. Выбирается n линейно независимых направлений dr1 ... drn . Обычно это единичные координатные орты e1 ... ern (вообще их можно выбрать исходя из

знания свойств целевой функции).

2. По каждому i -направлению (i =1,n) поочередно делается спуск, т.е.

находится zmi , доставляющий minϕ(xr0 + zdi ), и пересчитывается точка xr0 = xr0 + zmidri . z

При нахождении точки zmi используется либо метод последовательного

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

В результате выполнения этих n спусков, называемых циклом, точка x0 сдвинулась на вектор zr = zmidi .

3.Проверяется условие = zi < ε , если да, то процесс спуска заканчивается, и xrm = xr0 , Fm = f (xr0 ) .

4.В зависимости от полученного вектора z , несущего информацию о

функции, делается некоторое преобразование выбранных направлений: di = Π(zr,dr1 ... drn ), i =1,n .

5. Изменяется начальный шаг h в методах М13 или М14: h = / 4 . 6. Процесс вычислений повторяется с п.2.

Особенности программной реализации.

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

динат векторов D, где помещается k -я координата вектора di ; массивы z,x,a,b для zi ; рабочий массив x, а также массивы a и b в методе Розенброка, ДСК, Пауэлла. Затем пишется подпрограмма для функции ϕ (z) вдоль направления

dri , подпрограмма метода одномерного поиска минимума функции Fi (обычно

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

14

Во всех указанных методах вначале di = eri и, следовательно, матрица D

представляет собой единичную матрицу, в п. 1 следует вычислить dik = 0 если i k, drik =1, если i = k ).

Отличаются методы видом оператора преобразования этих направлений после каждого цикла спуска.

2.2 Метод ГАУССА-ЗЕЙДЕЛЯ

Этот метод не требует преобразования направлений, т.е. п.4 отсутствует, и спуск все время производится вдоль осей координат.

2.3. Метод ПАУЭЛЛА

Пересчет направлений осуществляется следующим образом:

r

n

r

r r

r

r

r

r

 

r

 

;

 

 

a

= zidi ;

dn = dn1; ...

d2

= d1;

d1

= a /

 

a

 

i=1

2.4. Метод ДСК

Пересчет направлений осуществляется по следующим формулам:

r

n

r

 

 

 

 

 

 

 

r

r

r r

 

r

 

;

 

 

 

ai

= z jd j ;

i =1...n 1; dn = dn1;

di = ai /

 

ai

 

 

j=i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.5. Метод РОЗЕНБРОКА

 

Формулы пересчета направлений:

 

 

 

 

 

r n

r

r

r

/

 

r

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ai = z jd j ;

d1

= a1

 

a1

 

 

 

 

 

 

 

 

 

 

 

j=i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

cri = ari (aridrj )drj ;

 

 

dri = cri /

 

cri

 

;

i = 2,n.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=1

Другая группа методов, нулевого порядка, представителями которых являются методы последовательного покоординатного перебора, Хука-Дживса и Нелдера-Мида, иллюстрируют широкие возможности для творческого поиска разнообразных способов выбора направлений.

2.6. Метод покоординатного последовательного перебора

Задается исходная точка x0 и начальный шаг h .

1.Вычисляется F0 = f (x0 ) .

2.Вычислить M = 0.

Для каждого i =1..n

повторить следующий цикл спуска:

вычислить xrT = xr0 + erih,

FT = f (xrT )

если FT F0

, тогда

 

вычислить xrT = xr0 erih, FT = f (xrT )

если FT F0

, тогда M = M +1 и перейти к следующему i ;

15

если FT < F0 , тогда xr0 = xrT , F0 = FT и перейти к следующему i ;

3. если M = n , т.е. уменьшения не было достигнуто ни по одному направлению, тогда если h ε , то xrm = xr0, Fm = F0 конец

если h >ε , то h = h / 2 перейти к п. 2. 4. если M n , то повторить с п.2.

2.7. Метод ХУКА-ДЖИВСА

Данный метод представляет модификацию предыдущего. Алгоритм метода

прост в реализации и метод довольно эффективен.

 

Задается исходная точка x0 и начальный шаг h .

 

1. Вычисляется xr1 = xr0,

F1 = f (xr1);

 

 

 

2. Вычислить M = 0.

 

 

 

 

 

 

Для каждой переменной i, i =1,n

повторяется следующая операция:

а) вычисляется xrT = xr1 + erih,

FT

= f (xrT ) ;

 

 

б) если FT F1 тогда xrT

= xr1 erih,

FT = f (xrT )

перейти к п. в,

 

 

 

иначе перейти к п. г;

 

 

 

 

в) если F

F тогда M = M +1 перейти к следующему i , иначе п. г.

r

r

T

1

 

 

 

 

 

 

г) x1 = xT

,

F1 = FT ;

 

 

 

 

 

 

т.е. по каждой переменной делается спуск на шаг h , если возможно.

3. Если M = n (т.е. уменьшения не было достигнуто ни в одном направле-

нии), тогда проверяется h <ε . Если да, то xm = xr1,

Fm = F1 конец. Если нет, то

h = h / 2

и повторить с п. 2.

 

 

 

 

 

 

4. Если M n , (т.е. мы спустились в точку x1, где F1 < f (xr0 ) .

 

 

 

 

 

 

 

r

r

и получаем в этом направ-

Тогда выбираем направление спуска d = x1

x0

лении новую точку xr2 = xr1 + 2d и вычисляем F2 = f (x2 ) .

5 Если rF2 <rF1 тогда xr0 = xr2;

xr1 = xr2;

F1 = F2 перейти к п. 2.

Иначе x0 = x1 , перейти к п. 2.

 

 

 

 

 

Обычно не следует задавать ε <104 , начальный шаг нужно выбрать из условия h xr0 xrm / 2 .

2.8. Метод НЕЛДЕРА-МИДА

Метод деформируемого многогранника - Нелдера-Мида (развитие симплексного метода Спендли, Хекста и Химсворта) является одним из самых эффективных методов нулевого порядка.

Симплекс - это фигура в n -мерном пространстве, имеющая n +1 вершину и n +1 грань. На плоскости - это треугольник, в n -мерном пространстве - тетраэдр.

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

16

Алгоритм метода описывается следующим образом. Заданы xr0

и началь-

ный размер симплекса h .

 

 

1. Строятся вершины начального симплекса:

 

 

xri = xr0 + erih; i =1,n xrn+1 = xr0.

 

 

Вычисляются значения функции Fi = f (xi ) в этих вершинах.

 

 

2. Найдем вершину xrp с наибольшим значением Fp = max Fi , вершину xq

со значением Fq ,

следующим за наибольшим Fq < Fp , и вершину

xm

с наи-

меньшим среди Fi

значением Fm = min Fi и запоминаются m,q, p .

 

 

3. Найдем центр тяжести x0 всех точек за исключением точки xp

по фор-

муле

 

 

 

xr0 = 1 n xri

n ip

4. Произведем теперь спуск в направлении d = xr0 xrp и получим новую

точку по формуле

xrr = xr0 +α(xr0 xrp )

α - коэффициент отражения, вычисляем Fr = f (xr ) ;

5. Если Fr < Fm , т.е. направление оказалось удачным, тогда продвинемся еще в этом направлении и получим точку xe = xr0 +γ (xrr xr0 ) , γ - коэффициент растяжения, вычислим Fe = f (xe ) .

5.1. Если Fe < Fm , то заменяем точку xp на точку xre ( xrp = xre , Fp = Fe ) и переходим к п.10.

5. 2. Если Fe > Fm то отбрасываем точку xe . (Очевидно, мы переместились слишком далеко от xr0 ). Заменяем точку xp на xr ( xp = xrr ,

Fp = Fr ) и переходим к п. 10.

6.Если Fm Fr Fq , тогда xp = xrr , Fp = Fr (точка xrr лучше, чем q и p ) и переходим к п. 10.

7.Если Fr > Fq тогда произведем сжатие:

7.1. Если Fr > Fq , тогда

xre = xr0 + β(xrp xr0 ) , перейти к п. 7.3.

7.2. Если Fr < Fq , тогда xp = xrr , Fp = Fr ,

xre = xr0 + β(xrr xr0 ) , перейти к п. 7.3. 7.3. Fe = f (xe ) ; ( β - коэффициент сжатия).

8. Сравним Fe и Fp .

8.1.Если Fe < Fp то xrp = xre , Fp = Fe , переходим на п. 10.

8.2.Если Fe < Fp , то очевидно, все наши попытки найти точкусо значением < Fp сказались неудачными. Следовательно, надо уменьшить начальный симплекс.

17

9.Редукция. Здесь возле точки xm строим новый симплекс, уменьшенный

в2 раза. Каждая вершина его вычисляется по формуле

xr

=

1 (xr

+ xr

), i =1...n +1, i m .

i

 

2

i

m

 

вычисляются Fi = f (xri ) .

10. Проверяется условие сходимости:

n+1

Fi

 

n+1

(Fi Fs )

2

Fs =

;

σ =

.

 

n +1

i=1 n +1

i=1

 

11. Если σ >ε , тогда перейти к п. 2.

Если σ ε , тогда процесс заканчивается и Fm , xm - искомые значения.

Рекомендуется выбирать следующие коэффициенты отражения α =1 , сжатия β = 0,5, растяжения γ = 2 .

18