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

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

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

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

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

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

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

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

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

05.01.2011

1

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

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

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

Пауэлла,

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

Розенброка.

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

05.01.2011

2

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

Y f ( x0 zd ) ( z )

Y f ( x )

 

 

 

 

 

x

0

 

 

 

 

x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

z

 

 

 

 

 

 

x x0

zd

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x10

 

 

 

d

 

 

x m x0 z m d

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

0

( x

 

0

, x

0 )

 

 

 

 

 

 

 

 

05.01.2011

 

 

 

 

 

1

 

 

2

 

3

 

 

 

 

 

 

 

 

 

 

 

 

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

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

2. Выбирается n линейно независимых направлений

d1 ... d n

Обычно это единичные координатные орты (вообще их можно выбрать исходя из знания свойств целевой функции).

x 0

x2

d2

 

x 20

d1

 

x10 x1

05.01.2011

4

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

m in F x

0

zd i m in ( z )

z

 

z

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

x0 x0 zm i d i

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

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

z m z m i d i

05.01.2011

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

x2

d2

 

 

x

0

d1

 

2

zm1

 

 

zm2

x10 x1

5

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

 

 

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

 

z m i

 

 

 

 

 

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

 

 

 

 

 

 

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

 

 

 

 

 

 

x m x 0 ,

Fm f ( x 0 )

x2

 

d2

 

 

 

 

 

 

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

x

0

 

zm1

d1

 

2

zm2

 

 

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

 

 

d2

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

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

 

 

d1

 

 

 

d i z m 1 ... z m n , d 1 ... d n

 

 

 

 

 

 

 

 

 

 

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

 

 

x10 1

x10

x

 

с новой точки

 

 

 

 

 

1

 

 

 

 

 

 

 

 

05.01.2011

 

 

 

 

 

6

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

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

f ( x ) ( x1 2 x 2 ) 2

const n=2;

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

function F(х:mas): real;

begin

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

end;

05.01.2011

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 в методе Розенброка, ДСК, Пауэлла;

05.01.2011

8

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

function F1(z: real): real;

begin

for k:=1 to n do

x[k]=x0[k]+z*D[i,k];

F1:=F(x);

end;

05.01.2011

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;

05.01.2011

10