
- •Тема 3 Методы оптимизации первого порядка
- •Общая характеристика методов первого порядка
- •Как известно, направление градиента является направлением наискорейшего возрастания функции в данной точке. Следовательно,
- •Метод тяжелого шарика
- •Уравнение траектории тяжелого шарика
- •Вычисление градиента
- •Вычисление градиента
- •Резюме
- •Общий алгоритм метода спуска по градиенту
- •Общий алгоритм метода спуска по градиенту
- •Общий алгоритм метода спуска по градиенту
- •В случае длинного оврага, если начальная точка выбрана неудачно, метод спуска по градиенту
- •Программная реализация
- •Подпрограмма для функции (z) вдоль направления d
- •Реализация алгоритма спуска к минимуму
- •Метод сопряженных направлений
- •Квадратичная функция
- •Сопряженные направления
- •Метод параллельных прямых
- •Метод Флетчера-Ривса
- •Алгоритм метода Флетчера-Ривса
- •Конец
Тема 3 Методы оптимизации первого порядка
Метод тяжелого шарикаМетод спуска по градиентуМетод сопряженных градиентов
06/25/19 |
1 |
Общая характеристика методов первого порядка
Чем больше информации о функции известно, тем более эффективно можно достичь минимума, если этой информацией правильно распорядиться
Методы нулевого порядка фактически не располагают никакой информацией о функции (это черный ящик). Правда в процессе спуска они ее накапливают и используют для очередного спуска (например метод Розенброка осуществляет поворот координат в зависимости от результатов предыдущего спуска)
В методах первого порядка при выборе следующего направления спуска используется градиент функции в текущей точке и в предыдущей
r |
r |
df |
|
df |
|
|
g |
f (x) |
|
|
,..., |
|
. |
|
|
|||||
|
|
|
dxn |
|
||
|
|
dx1 |
|
|
06/25/19 |
2 |
Как известно, направление градиента является направлением наискорейшего возрастания функции в данной точке. Следовательно, противоположное направление является направлением наискорейшего убывания функции.
Это свойство в основном и используется для построения методов минимизации первого порядка.
При этом направление наискорейшего убывания в данной точке не всегда оказывается наилучшим для спуска к минимуму.
Поэтому для повышения эффективности вводят различные поправки.
При выборе очередного направления используют накопленную информацию о функции из предыдущих спусков.
Множество возможностей введения таких поправок определяет многообразие различных методов первого порядка.
06/25/19 |
3 |

Метод тяжелого шарика
• |
Представим себе котлован. |
|
|
Мы находимся на каком то |
|
|
склоне и отпускаем круглый |
|
|
камень. |
x2 |
• |
По какой траектории он будет |
|
|
катиться? Видимо по такой |
|
|
которая здесь показана |
|
•Траектория задается функцией координат от времени
r |
r |
(t) |
r |
(0) |
r0 |
x |
x |
x |
x |
•От чего зависит эта траектория?
f(x1,x2)
x1
06/25/19 |
4 |
Уравнение траектории тяжелого шарика
x |
- скорость движения шарика |
t |
|
2 xr |
- ускорение шарика |
t2 |
f (x) - сила тяжести шарика
|
x |
- сила трения шарика |
||||
|
t |
|
2 r |
|
r |
|
|
|
|
|
r |
||
|
|
x |
|
x |
||
|
m |
t2 |
|
t |
f (x) 0 |
06/25/19 |
уравнение движения шарика |
5 |
|
|
|
Решение уравнения |
Можно использовать разные |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
2 r |
r |
|
|
|
|
|
|
|
методы решения этой задачи |
|||||
|
|
|
|
|
|
x(0) x |
Коши |
|
|||||||
t |
2 |
a |
t b f (x) 0; |
уже знакомо |
|||||||||||
|
|
x |
x |
|
|
|
r |
|
r |
r0 |
Мы используем то, что вам |
||||
|
|
|
|
rk 1 |
|
|
rk |
|
rk 1 |
|
rk 1 |
rk 1 |
rk |
|
|
|
|
|
|
x |
|
2x |
x |
|
x |
x |
|
||||
|
|
|
|
|
|
|
|
|
|
|
a |
|
|
b f (x |
) 0 |
|
|
|
|
|
|
|
2 |
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
xrk 1 |
1 |
|
2xrk 1 a xrk 1 2b f (xrk ) |
||||||||
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
1 a |
|
|
|
|
|
Задаем две точки |
|
r0 |
, |
r 1 |
Вычисляем градиент |
|||||
x |
|
x |
|
|
r1 |
|||||
Подставляем в уравнение и получаем новую точку |
||||||||||
x |
||||||||||
r0 |
, |
r1 |
|
r2 |
и т.д. |
|
rk |
|||
|
|
|||||||||
Подставляем x |
|
x |
получаем x |
|
x |
|||||
06/25/19 |
|
|
|
|
|
|
|
|
|
f (xr0 )
xrk 1 |
|
|
|
|
|
|
|||
|
|
|
|
6 |
Вычисление градиента
• Если функция задана аналитически, например
f(x1, x2 ) (x1 x2 )2 2x12
•То просто пишем подпрограмму
•Procedure gradF(var x,dF:mas;n:byte);
•Begin
•df[1]:=6*x[1];
•df[2]:=-2*x[2];
•End;
06/25/19 |
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; 06/25/19 |
8 |
Резюме
Если правильно подобрать управляющие параметры a, b, и метод решения задачи Коши то метод
шарика может конкурировать с методами нулевого порядка. Однако на настройку параметров уходит довольно много времени.
Метод тяжелого шарика имеет лишь методическое значение, в силу больших затрат на настройку и реализацию алгоритма
Однако он показывает, как можно систематически спускаться к минимуму если знать градиент функции
Более эффективны методы спуска, в которых очередное направление выбирается с использованием градиента
Ниже мы рассмотрим общий алгоритм таких методов
06/25/19 |
9 |

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