
Презентации и конспект лекции Синицын / Презентации_ВЭиМОвТС / МетодыОптимизации / Лекция2_Методы нулевого порядка
.pdfТема 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 |