
Презентации и конспект лекции Синицын / Презентации_ВЭиМОвТС / МетодыОптимизации / Лекция3 Методы первого порядка
.pdfТема 3 Методы оптимизации первого порядка
Метод тяжелого шарика Метод спуска по градиенту Метод сопряженных градиентов
05.01.2011 |
1 |

Общая характеристика методов первого порядка
Чем больше информации о функции известно, тем более эффективно можно достичь минимума, если этой информацией правильно распорядиться
Методы нулевого порядка фактически не располагают никакой информацией о функции (это черный ящик). Правда в процессе спуска они ее накапливают и используют для очередного спуска (например метод Розенброка осуществляет поворот координат в зависимости от результатов предыдущего спуска)
В методах первого порядка при выборе следующего направления спуска используется градиент функции в текущей точке и в предыдущей
g f ( x ) |
|
d f |
|
d f |
|
|
|
, ..., |
. |
||||
d x1 |
d x n |
|||||
|
|
|
|
|||
05.01.2011 |
|
|
|
|
2 |
Как известно, направление градиента является направлением наискорейшего возрастания функции в данной точке. Следовательно, противоположное направление является направлением наискорейшего убывания функции.
Это свойство в основном и используется для построения методов минимизации первого порядка.
При этом направление наискорейшего убывания в данной точке не всегда оказывается наилучшим для спуска к минимуму.
Поэтому для повышения эффективности вводят различные поправки.
При выборе очередного направления используют накопленную информацию о функции из предыдущих спусков.
Множество возможностей введения таких поправок определяет многообразие различных методов первого порядка.
05.01.2011 |
3 |

Метод тяжелого шарика
• Представим себе котлован. |
f(x1,x2) |
Мы находимся на каком то |
|
склоне и отпускаем круглый |
|
камень. |
|
• По какой траектории он |
x2 |
будет катиться? Видимо по |
|
такой которая здесь показана
•Траектория задается функцией координат от времени
x x (t ) |
x (0 ) x 0 |
• От чего зависит эта |
x1 |
|
траектория? |
||
|
05.01.2011 |
4 |

Уравнение траектории тяжелого шарика
|
|
x |
|
|
|
- скорость движения шарика |
|
|||||||
|
|
|
|
|
|
|
||||||||
|
|
t |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 x |
- ускорение шарика |
|
|||||||||||
|
t 2 |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
f ( x ) |
- сила тяжести шарика |
|
|||||||||||
|
|
x |
|
|
|
|
|
|
||||||
|
|
|
|
|
- сила трения шарика |
|
||||||||
|
|
|
|
|
||||||||||
|
|
|
|
t |
|
|
|
|
|
|
||||
|
|
|
|
|
|
m |
2 x |
|
|
x |
f ( x ) 0 |
|
||
|
|
|
|
|
|
t |
2 |
|
t |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|||
05.01.2011 |
|
|
|
|
|
|
|
|
|
уравнение движения шарика |
5 |

Решение уравнения |
|
|
Можно использовать разные |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
методы решения этой |
|
|||||||
2 x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
задачи Коши |
|
|
|
|
||||
a |
x |
b |
f ( x ) 0; |
x ( 0 ) |
x |
0 |
Мы используем то, что вам |
|||||||||||||||||||
t 2 |
t |
|
уже знакомо |
|
|
|
|
|||||||||||||||||||
|
|
x k 1 2 x k x k 1 |
|
a |
|
x k 1 x k 1 |
b f ( x k ) 0 |
|
||||||||||||||||||
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
x k 1 |
|
1 |
|
|
|
2 x k 1 |
a x k 1 2 b f ( x k ) |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
1 |
a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Задаем две точки |
|
x |
0 |
, x |
1 |
Вычисляем градиент |
|
f ( x 0 ) |
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
Подставляем в уравнение и получаем новую точку |
x 1 |
|
|
|
|
|
|
|||||||||||||||||||
Подставляем |
x |
0 |
, |
x |
1 |
|
получаем |
x 2 |
и т.д. |
|
x |
k |
x |
k 1 |
|
|
|
|||||||||
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
05.01.2011 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
Вычисление градиента
• Если функция задана аналитически, например
f ( x1 , x2 ) ( x1 x2 ) 2 2 x12
•То просто пишем подпрограмму
•Procedure gradF(var x,dF:mas;n:byte);
•Begin
•df[1]:=6*x[1];
•df[2]:=-2*x[2];
•End;
05.01.2011 |
7 |
Вычисление градиента
•Если функция задана в виде сложной программы, и производные невозможно просто вычислить
•Function F(var x:mas,n:byte):real;
•Begin
•f:=sqr(x[1]-x[2])+2*sqr(x[1])
•End;
•То пишем подпрограмму
•Procedure gradF(var x,dF:mas,n:byte,h:real);
•Begin
•df[1]:=(F(x[1]+h,x[2])-F(x[1]-h,x[2]))/(2*h);
•df[2]:=(F(x[1],x[2]+h)-F(x[1],x[2]-h))/(2*h);
• End; |
|
05.01.2011 |
8 |
Резюме
Если правильно подобрать управляющие параметры a, b, и метод решения задачи Коши то метод шарика может конкурировать с методами нулевого порядка. Однако на настройку параметров уходит довольно много времени.
Метод тяжелого шарика имеет лишь методическое значение, в силу больших затрат на настройку и реализацию алгоритма
Однако он показывает, как можно систематически спускаться к минимуму если знать градиент функции
Более эффективны методы спуска, в которых очередное направление выбирается с использованием градиента
Ниже мы рассмотрим общий алгоритм таких методов
05.01.2011 |
9 |

Общий алгоритм метода спуска по градиенту
1. Задается начальная точка |
x |
0 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
и начальный шаг h |
|
|
|
|
|
||
|
одномерного спуска . |
|
x2 |
g0 |
||||
2. Вычисляется |
|
|
|
|
|
|||
|
|
|
|
|
|
|
||
|
g f ( x |
|
) |
|
x |
0 |
|
|
|
|
|
|
|||||
|
0 |
|
2 |
|
d |
|||
|
|
|
|
|
|
|
||
3.Выбирается направление |
|
|
|
|
|
d g
x10 x1
05.01.2011 |
10 |