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

Тема 2 Методы оптимизации нулевого порядка

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

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

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

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

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

Методы спуска с перебором направлений

Хука-Дживса и Нелдера-Мидта

06/25/19

1

Методы покоординатного спуска

Среди методов нулевого порядка можно выделить группу методов покоординатного спуска:

Гаусса-Зейделя,

Пауэлла,

Дэвиса-Свена-Кемпи (ДСК),

Розенброка.

Алгоритм этих методов в общем одинаков и описывается следующим образом:

06/25/19

2

Спуск по направлению

Y f (x0 zd ) (z)

Y f (x)

0

x2

 

x2

x x0

zd

z

 

 

x10

xm x0 zmd

 

d

 

 

x1

 

 

r

0

0

x0

(x1

, x2 )

06/25/19

 

3

Общий алгоритм

 

 

1. Задается начальная точка

x0

 

 

и начальный шаг h

 

 

 

одномерного спуска .

x2

 

 

2. Выбирается n линейно

d2

 

независимых направлений

x20

 

d1 ... dn

 

d1

 

 

 

 

 

Обычно это единичные

 

 

 

координатные орты (вообще их

 

 

 

можно выбрать исходя из знания

 

x10

x1

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

 

06/25/19

 

 

4

• 3. По каждому

i-направлению

Общий алгоритм

поочередно делается спуск (i=1..n),

 

т.е. находится zmi, доставляющий

 

r

 

 

min F x0 zdi min (z)

 

z

z

 

пересчитывается точка

x2

 

 

 

x0 x0 zmidi

d2

 

 

 

 

При нахождении min используется

x20

zm1

d1

 

либо метод последовательного

 

 

 

 

перебора, если функция не гладкая,

 

zm2

 

 

либо метод квадратичной параболы

 

 

 

 

для гладких функций.

 

 

 

В результате выполнения этих

 

x10

 

 

спусков, называемых циклом, точка

 

x1

 

сдвинулась на вектор

 

 

zm zmidi

 

 

5

 

06/25/19

 

 

4. Проверяется условие

 

Общий алгоритм

 

zmi

 

 

 

 

 

 

 

если да, то процесс спуска

 

 

 

 

 

заканчивается

 

 

 

x2

 

 

 

 

xm x0 , Fm f (x0 )

 

d2

 

 

 

 

 

5. В зависимости от полученной

x20

zm2

zm1

d1

 

информации о функции, делается

d2

 

 

 

 

 

 

 

некоторое преобразование

 

 

 

 

 

 

 

 

 

выбранных направлений:

r

d1

 

 

 

 

r

r

 

 

 

 

 

di zm1...zmn ,d1

... dn

 

x01

x10

 

Процесс вычислений повторяется

 

x1

 

с новой точки

 

 

 

 

1

 

 

 

 

 

 

 

 

 

06/25/19

6

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

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

целевой функции, имеющей вид

r

 

2

f (x) (x1

2x2 )

 

const n=2;

type mas=array[l..n] of real;

function F(х:mas): real;

begin

F:=sqr(x[1]+2*x[2])

end;

06/25/19

7

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

После этого напишем подпрограмму метода оптимизации:

Type fun=function (x:mas):real

Procedure MPSP(F:fun;

var x0:mas;eps,h:real;var fm:real);

внутри которой следует ввести:

для координат векторов направлений массив D[i,k] где помещается i-я координата вектора dk

var

D:array[1..n,1..n] of real

zm,x,a,b:array[1..n] of real;

рабочие массивы zm, x,

a и b в методе Розенброка, ДСК, Пауэлла;

06/25/19

8

Подпрограмма для функции (z) вдоль направления di

function F1(z: real): real;

begin

end;

for k:=1 to n do x[k]=x0[k]+z*D[i,k];

F1:=F(x);

06/25/19

9

Подпрограмма метода одномерного поиска

Function MPP(z0,h,eps:real):real;

begin

y1:=F1(z0); z1:=z0;

repeat

repeat

 

z0:=z1;

y0:=y1;

z1:=z0+h;

y1:=F1(z1);

until y1>y0;

h:=-h/4;

 

until abs(h)<eps;

Result:=y0;

end;

06/25/19

10