 
        
        1017
.pdf 
| 39. Поскольку i 2 n и f y(3) | f x(4) | 1; 0 0 , то поиск по об- | ||||
| разцу на шаге 42 неудачен, переход к шагу 5. | 
 | x* ( 1; 0)T . | 
 | 
 | ||
| 51. Так как 1 2 1 , то поиск завершен, | 
 | 
 | ||||
| На рис. 7 приведены линии уровня функции | f (x) 4(x 1)2 | 4x2 | , по- | |||
| строенные в системе MathCAD. | 
 | 
 | 1 | 2 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | |
| f(x1) 4 (x1 1)2 | f1(x1) | 1 (x1 1)2 | 
 | 
 | ||
| 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | |
f(x1)
| f1(x1) | 1 | 
| 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 3 | 
 | 
 | 
 | 2 | 
 | 
 | 
 | 1 | 0 | 
 | 
 | 1 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | x1 | 
 | 
 | 
 | 
 | 
 | ||
| Рис. 7. Линии уровня функции | 
 | 
 | f (x) 4(x | 1)2 | 4x2 | |||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1 | 
 | 2 | ||
Комплексный поиск Бокса
Для реализации метода комплексного поиска Бокса используется следующий алгоритм:
1. Строится многогранник с 2n вершинами (комплекс), для чего выбирается 2n точек из пространства E n по формуле
| x(0) | l | r | 
 | 
 | u | l | 
 | , | i 1, 2, , 2n, l | x | u , | (4.2) | |
| 
 | 
 | ||||||||||||
| i | i | i | 
 | 
 | i | i | 
 | 
 | 
 | i | i | i | 
 | 
| где xi xi1, xi2 , , xiп , | 
 | 
 | li | li1, li2 , , liп , | ui ui1, ui2 , , uiп , ri | – диаго- | |||||||
нальная матрица псевдослучайных чисел, равномерно распределенных на интервале 0,1 .
2. Целевая функция вычисляется в каждой вершине, и вершина, в которой f (x) имеет наихудшее значение, заменяется новой вершиной, находя-
щейся на прямой, проходящей через наихудшую вершину и центр тяжести оставшихся точек.
Координаты центра тяжести можно определить по формуле
| 
 | 1 | 
 | 
 | 2n | 
 | 
 | 
 | |
| xcj(k ) | 
 | 
 | xij xhj | , | (4.3) | |||
| 2n 1 | ||||||||
| 
 | i 1 | 
 | 
 | 
 | ||||
где j – номер координаты вектора xi; i – номер точки;
h – номер удаляемой точки.
61
 
Координаты новой точки определяются по формуле
| x(k 1) | x | cj | (x | cj | x(k ) ), | j 1, 2, , 2n, | (4.4) | 
| hj | 
 | 
 | hj | 
 | 
 | 
где 1 – коэффициент отражения (например, 1,3 ).
3. Если значение f (x) в найденной новой вершине остается наихуд-
шим, то она заменяется другой, расположенной на расстоянии, равном половине расстояния от новой вершины до центра тяжести. (Если нарушается ограничение li xi ui , то новая вершина также передвигается на половину
расстояния к центру тяжести.)
4.Поиск продолжается до тех пор, пока многогранник не будет стянут
вцентр тяжести (в пределах заданной точности).
Пример 16.
| Выполнить | минимизацию функции | f (x) 6x 2 0,25(x | 2 | 40)2 | , | 
| 0 x1 6; 20 x2 | 
 | 1 | 
 | 
 | |
| 80; 0,001 методом комплексного поиска Бокса. | 
 | ||||
| Решение. | 
 | 
 | 
 | 
 | 
 | 
| По условию задачи, нижние границы переменных li (0; 20) , | верхние | ||||
| ui (6; 80) . | 
 | из интервала 0,1 : | 
 | 
 | 
 | 
| Случайным образом выбираем значения ri | 
 | 
 | 
 | ||
| r1 0,1; 0,8, 0,7; 0,5 , r2 0,9; 0,2, 0,3; 0,4 | 
 | 
 | 
 | ||
Строим многогранник с 4-мя вершинами, для чего выбираем 4 точки из области определения функции по формуле (4.2).
x11(0) l1 r11 u1 l1 0 0,1 20 0 2. Аналогично
x12(0) 0 0,8 20 0 16; x13(0) 0 0,7 20 0 14;
x14(0) 0 0,5 20 0 10. Аналогично
| x(0) | l | 2 | r(0) | 
 | 
 | u | 2 | l | 2 | 
 | 6 0,9 | 
 | 80 6 | 
 | 72,6; | 
| 
 | 
 | 
 | 
 | ||||||||||||
| 21 | 
 | 21 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
x22(0) 6 0,2 80 6 20,8; x23(0) 6 0,3 80 6 28,2;
x24(0) 6 0,4 80 6 35,6.
Вычисляем в каждой полученной вершине значение функции и выби-
раем наихудшее.
f (2; 72,6) 289,69; f (16; 20,8) 1628,16; f (14; 28,2) 1210,81; f (10; 35,6) 604,84.
62
 
| В точке xh(0) x2(0) | (16; 20,8) функция принимает максимальное | 
(наихудшее) значение; поэтому заменяем ее другой, расположенной на прямой, проходящей через нее и центр тяжести оставшихся точек.
Координаты центра тяжести рассчитаем по формуле (4.3):
xc1 13 (2 14 10) 8,6667; xc2 13 (72,6 28,2 35,6) 45,4667.
Координаты новой точки определяем по формуле (4.4), приняв 1,1: x21(1) 8,6667 1,1 (8,6667 16) 0,6;
x22(1) 45,4667 1,1 (45,4667 20,8) 77,88.
Как видим, ограничение li xi ui не нарушается; поэтому продолжим
вычисления с новой точкой.
Процесс заканчивается при выполнении условия
f (x(k 1) ) f (x(k ) ) .
Повторяющийся случайный поиск
Метод случайного поиска представляет собой выбор наилучшего направления минимизации из многих возможных, получаемых случайным путем, и переход к новой точке с минимальным значением функции в этом направлении.
Алгоритм метода.
1.Задается начальная точка x(0) .
2.Строится случайная траектория из последовательности шагов по формуле
| x | (k 1) | x | (k ) | (k ) | 
 | z(k ) | 
 | 1 r | (k ) | 
 | 
 | ||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | , | |||
| 
 | 
 | 
 | 
 | z(k ) | 
 | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| где (k ) – | числовой параметр, увеличивающийся при удачном и уменьша- | 
| 
 | ющийся при неудачном шаге (можно начать с (k) 1); | 
| – | числовой параметр, изменяемый в процессе поиска (можно при- | 
| 
 | нять 0,5 ); | 
z(k ) – вектор «предыстории», учитывающий среднее направление поиска на предыдущих шагах:
z(k 1) z(k ) 1 x(k 1) x(k ) s(k ) ;
r (k ) –
s(k ) –
–
единичный вектор, компоненты которого определяются случайным образом с помощью генератора псевдослучайных чисел на интервале [0, 1], а затем весь вектор нормируется (делится на длину);
вектор масштабных множителей ( s(k) 1); постоянный весовой множитель = 0,5.
63
3. Вектор x(k 1) будет принят или отвергнут в зависимости от того, вы-
| полняется или нет неравенство | f x(k 1) f x(k ) . | Если x(k 1) принят, то | ||||
| (k 1) | (k ) | (k 1) | 
 | (k ) | 
 | 
 | 
| 
 | 
 | , если нет, то | 
 | , | 1, например 1,3. | |
Пример 17.
Выполнить минимизацию функции
f (x) 6x12 0,25(x2 40)2
методом повторяющегося случайного поиска. Точность вычислений
0,001.
Решение.
| Задаем: | x | (0) | 
 | 
 | 1 | 
 | 
 | (k ) | 1, | 0,5 , | s | (k ) | 1, = 0,5, | z | (0) | 
 | 1 | 
 | 
 | ||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | , | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | . | 
 | ||||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 0 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 41 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| Случайным образом выбираем значения ri из интервала 0,1 : | 
 | ||||||||||||||||||||||||||||||||||||
| r(0) | 0,001; 0,193 . | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||
| x | (1) | x | (0) | 
 | 
 | (0) | 
 | 
 | 
 | 
 | z(0) | 
 | 1 r | (0) | 
 | 
 | 1 | 
 | 
 | 
 | 
 | z | (0) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1 0,5 | 
 | 
 | 
 | 
 | 
 | 
 | (1 | 0,5) | 0,1 . | ||||||||||||
| 
 | 
 | 
 | 
 | z | 
 | 
 | 
 | 
 | 
 | 
 | z | 
 | 
 | 
 | |||||||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | (0) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 41 | 
 | 
 | 
 | (0) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||
| x | (1) | 1 1 0,5 1 1 0,5 0,001 | 1,5005; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||||||||
| 1 | 41 1 0,5 0 1 0,5 0,193 41,0965; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||||||||||
| x2(1) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||||
| f x(0) | , x(0) f (1; 41) 6,25 ; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||
| 
 | 
 | 1 | 
 | 
 | 2 | f (1,5005; 41,0965) 13,8096. | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||||
| f x(1) | , x(1) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||
| 
 | 
 | 1 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
| f x(1) | , x(1) | f | x(0) , x | (0) | 
 | (1) | (0) | 
 | 0,5 , | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||
| 
 | 
 | 1 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 1 | 
 | 
 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| x(2) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||
| (1,5005; 41,0965) – не принимается. | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||||||||||
| x | (2) | 1 0,5 0,5 1 0,5 0,091 1,27275; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||||||||
| 1 | 41 0,5 0,5 0 0,5 0,014 41,0035; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||||||||||||
| x2(2) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||||
| z | (1) | 0,5 1 1 0,5 x(1) | 
 | x(0) 1 0,5 0,5 1,27275 1 0,636375; | |||||||||||||||||||||||||||||||||
| 1 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1 | 
 | 1 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| z2(1) | 0,5 0 1 0,5 x2(1) | 
 | x2(0) 1 0 0,5 41,0035 41 0,00175; | ||||||||||||||||||||||||||||||||||
| x | (2) | x | (0) | 
 | 
 | (1) | 
 | 
 | 
 | 
 | z(1) | 
 | 1 r | (2) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||
| 
 | 
 | 
 | z(1) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
64
 
| x(2) | 
 | 
 | 0,636375 | 
 | 
 | |
| 1 0,5 0,5 | 
 | 0,5 0,091 | 1,27275; | |||
| 
 | ||||||
| 1 | 
 | 
 | 0,6363752 0,001752 | 
 | 
 | |
| 
 | 
 | 
 | ||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
| x2(2) | 
 | 
 | 
 | 
 | 0,00175 | 
 | 
 | 
 | |
| 41 | 0,5 0,5 | 
 | 
 | 
 | 0,5 0,014 | 41,10058; | |||
| 0,6363752 0,001752 | |||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | ||||
| f x(0) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| , x(0) | f (1; 41) 6,25 ; | 
 | 
 | 
 | |||||
| 1 | 2 | f (1,27275; 41,10058) 10,02217. | 
 | ||||||
| f x(2) | , x(2) | 
 | |||||||
| 1 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| f x(2) | , x(2) | f x(1) | , x(1) | (2) (1) | 0,25 | 
 | |||
| 1 | 2 | 1 | 2 | 
 | 
 | 
 | 
 | ||
2
и т.д., процесс заканчивается, если выполняется условие
f (x(k 1) ) f (x(k ) ) .
Методы первого порядка
Рассмотрим методы поиска, в которых наряду со значениями функции
| используется и ее градиент. | 
 | 
 | 
 | в точке x(k) x1(k), x2(k) ,..., xп(k) | ||||
| Напомним, что градиент функции f x | 
 | |||||||
| определяется формулой | 
 | f x k | 
 | f x k | 
 | 
 | f x k T | |
| 
 | 
 | 
 | 
 | |||||
| f (x(k ) ) | 
 | 
 | , | 
 | 
 | , ..., | 
 | . | 
| x | x | 
 | x | |||||
| 
 | 
 | 
 | 
 | 
 | 
 | |||
| 
 | 
 | 1 | 
 | 2 | 
 | 
 | n | 
 | 
Вектор f (x(k ) ) или grad f x ортогонален линиям уровня f (x) c const ; его направление совпадает с направлением наибольшего возрастания функции f (x) в заданной точке. Следовательно, векторgrad f (x) , противоположный градиенту и называемый антиградиентом,
направлен в сторону наискорейшего убывания функции (наискорейшего спуска). В точке минимума функции grad f (x) 0 .
Метод градиентного спуска Идея метода градиентного спуска состоит в следующем. Выбираем не-
которую начальную точку и вычисляем в ней градиент рассматриваемой функции. Делаемшаг внаправлении антиградиента. Врезультатеприходим в точку, значение функции в которой обычно меньше первоначального. Если это условие не выполнено, т.е. значение функции не изменилось либо даже возросло, то нужно уменьшить шаг. В новой точке процедуру повторяем: вычисляем градиент и снова делаем шаг в обратном к нему направлении. Процесс продолжается до получения наименьшего значения целевой
65
 
функции. Момент окончания поиска наступит тогда, когда движение из полученной точки с любым шагом приведет к возрастанию целевой функции.
Определим итерационный процесс:
где x(k) (k)s(k) –
(k ) – s(k ) –
s(k ) f x(k ) .
f x(k )
Следовательно,
x(k 1) x(k ) x(k ) x(k ) (k ) s(k ) ,
шаг минимизации; скаляр;
единичный вектор в направлении минимизации,
| x(k 1) xk | (k ) f x(k ) | . | (4.5) | 
| f x(k ) | 
Поскольку один шаг в направлении наискорейшего спуска в общем случаенеприводитвточкуминимума f (x) , формула(4.5) должнаприменяться
многократно до тех пор, пока не будет достигнут минимум. В точке минимума 
 f x(k)
 f x(k) 
 .
 .
Процедура поиска может закончиться в стационарной точке (в которойf x(k ) 0 ) различноготипа. Поэтомуиногдаследуетопределять, является
ли данная точка точкой локального минимума (т.е. решением) или седловой точкой. Если это седловая точка, то необходимо выйти из нее, применив ка- кой-либо метод нулевого порядка, после чего минимизация может опять
| продолжаться градиентным методом. Тип стационарной точки можно опре- | |||||||
| делить с помощью матрицы Гёссе | 2 | f x | (k ) | 
 | 2 f x(k ) | : если эта матрица | |
| 
 | 
 | 
 | xi x j | 
 | |||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
является положительно-определенной, то имеем точку минимума, иначе стационарная точка является седловой.
Критерий окончания поиска основывают:
a) на значении f (x) (когда уменьшение функции не происходит ни в одном направлении);
b) на значении f x(k ) (когда вектор f x(k ) близок к 0):
| где – заданная точность, | 
 | f x(k 1) | 
 | 
 | 
 | , | 
 | 
 | 2 | 
 | |||||
| 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||
| 
 | 
 | 
 | 
 | n | 
 | (k 1) | 
 | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||
| 
 | f x | (k 1) | 
 | 
 | 
 | f x | 
 | 
 | ; | ||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||
| 
 | 
 | 
 | xi | 
 | |||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | i 1 | 
 | 
 | 
 | ||||||
| c) на комбинации значений | f (x) | и f x(k ) . | 
 | 
 | 
 | ||||||||||
66
 
Важным вопросом является выбор величины шага (k ) . Обычно используется один из следующих способов выбора вектора (k ) :
1)(k) const;
2)(k ) 0 при k ;
3)целевая функция минимизируется по :
min f x(k ) s(k ) .
Для этого значение может быть вычислено из уравнения
| df x(k ) s(k ) | 0 . Минимум функции min f x(k ) можно определить также | 
| d | 
 | 
| 
 | 
каким-либо численным методом.
Теорема сходимости градиентного метода минимизации.
Если f (x) – выпуклая функция, имеющая производные до третьего по-
рядка, то метод наискорейшего спуска сходится из любого начального приближения.
При использовании градиентного спуска в задачах оптимизации основной объем расчетов приходится обычно на вычисление градиента целевой функции в каждой точке траектории спуска. Поэтому целесообразно уменьшить количество таких точек без ущерба для самого уравнения. Это дости-
гаетсявметоденаискорейшегоградиентногоспуска(рис. 8) следующимоб-
разом. После определения в начальной точке направления, противоположного градиенту целевой функции, делают не один шаг, а несколько, продолжая двигаться в этом направлении, пока целевая функция убывает, таким образом достигая минимума по направлению в некоторой точке. В этой точке снова определяют направление спуска (с помощью антиградиента) и ищут новую точку минимума целевой функции и т.д. В этом методе спуск происходит гораздо более крупными шагами, и градиент вычисляется в меньшем числе точек.
Рис. 8. Иллюстрация метода наискорейшего градиентного спуска
67
 
| 
 | Пример 18. | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | f x x | 2 25x | 2 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||||
| 
 | Минимизировать | функцию | 
 | методом градиентного | |||||||||||||||||||||||||||||||
| спуска. | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | ||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||
| 
 | Решение. | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 2, 2 . | 
 | 
 | 
 | 
 | |||||||
| 
 | Возьмем фиксированную длину шага 1; x(0) | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||||||||
| 
 | Для организации итерационного процесса выбираем формулу (4.5). | ||||||||||||||||||||||||||||||||||
| Найдем градиент и его норму: | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||
| 
 | 
 | f x | (k ) | 2x1(k ) ; | 
 | 
 | f x | (k ) | 50x2(k ) ; | 
 | 
 | 
 | 
 | (k ) | |||||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | f x(k ) 2x1 | , | |||||||||||||||||||||||
| 
 | 
 | x1 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | x2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 50x(k ) | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | f x(k ) | 
 | 
 | 
 | f x(k ) 2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 2 | |||||||||||||
| 
 | 
 | 
 | (k ) | 
 | 
 | 
 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
 | (k ) 2 | (k ) 2 | |||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||
| 
 | 
 | f x | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 2x1 | 50x22 | 
 | ||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | x | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | x | 
 | 
 | 
 | 
 | ||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| 
 | 
 | 42 1002 | 100,08. | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 4 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1,96 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | f x(0) 104; | f x(1) 28,842; | |||||||||||||||||||||||
| 
 | 
 | x(1) | 
 | 
 | 
 | 1 | 100 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ; | ||||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||||
| 
 | 
 | 
 | 
 | 2 | 
 | 
 | 
 | 100,08 | 
 | 
 | 1 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 3,92 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1,96 | 
 | 
 | 
 | 
 | 
 | 
 | 50 | 
 | 
 | 1,88 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | x(2) | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | и т.д. | 
 | 
 | 
 | 
 | ||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 1 | 
 | 
 | 
 | 
 | 
 | 
 | 50,1 | 
 | 
 | 
 | 0 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||
| 
 | В табл. 16 представлено 4 шага оптимизации. | 
 | 
 | Таблица 1 6 | |||||||||||||||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | Величина шага | 
 | 
 | |||||
| 
 | x1 | x2 | 
 | 
 | 
 | 
 | f x(k ) | 
 | f x(k ) | 
 | 
 | 
 | 
 | f x | (k ) | 
 | 
 | 
 | при переходе к | f x(k ) | 
 | ||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | x1 | 
 | 
 | 
 | 
 | x2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | следующему | 
 | 
 | |||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | этапу | 
 | 
 | 
 | 
 | ||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | x1 | 
 | x2 | 
 | 
 | 
 | |
| 
 | 2 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | 4 | 
 | 
 | 
 | 
 | 100 | 
 | 
 | 
 | 
 | 100,08 | 
 | 
 | 
 | – 0,04 | 
 | – 1 | 
 | 104 | 
 | |||||||
| 
 | 1,96 | 1 | 
 | 
 | 
 | 
 | 
 | 3,92 | 
 | 
 | 
 | 50 | 
 | 
 | 
 | 
 | 
 | 50,1 | 
 | 
 | 
 | – 0,078 | 
 | – 1 | 
 | 28,842 | 
 | ||||||||
| 
 | 1,88 | 0 | 
 | 
 | 
 | 
 | 
 | 3,76 | 
 | 
 | 
 | 0 | 
 | 
 | 
 | 
 | 
 | 3,76 | 
 | 
 | 
 | 
 | – 1 | 
 | 0 | 
 | 3,534 | 
 | |||||||
| 
 | 0,88 | 0 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 0,774 | 
 | 
| 
 | В дальнейшем для обеспечения сходимости необходимо уменьшить , | ||||||||||||||||||||||||||||||||||
| иначе при подходе к минимуму x* 0, 0 | могут возникнуть колебания зна- | ||||||||||||||||||||||||||||||||||
| чений f x(k ) вокруг значения точки минимума. | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||||||||||||||||||||||
| 
 | Минимум функции f 0,0045; 0,05 0,062 | 
 | с точностью 0,01 достиг- | ||||||||||||||||||||||||||||||||
нут на 90-й итерации.
68
Пример 19.
Решить задачу из примера 18 методом наискорейшего градиентного спуска.
Решение.
Используя условия примера 18, имеем
| 
 | 
 | 
 | 
 | 4 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 
 | 2 | 
 | 
 | 
 | 1,96 | 
 | 
 | |
| x(1) | 100 | 
 | f x(1) 28,842. | ||||||
| 
 | 
 | 
 | 1 | 
 | 
 | 
 | ; | ||
| 
 | 
 | 2 | 
 | 100 | 
 | 
 | 1 | 
 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||
Далееиспользуемужевыбранноена1-мшагенаправление, т.е. небудем пересчитывать градиент для точек x(k 1) на последующих итерациях до тех
| пор, пока функция | f (x) будет убывать на выбранном направлении. | |||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 4 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 1,96 | 
 | 
 | 
 | 
 | 
 | 1,92 | 
 | 
 | |||
| x(2) | 1 | 100 | 
 | f x(2) | 3,686; | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ; | ||||
| 
 | 
 | 1 | 
 | 
 | 
 | 100 | 
 | 
 | 0 | 
 | 
 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||
| 
 | 
 | 
 | 
 | 
 | 
 | 4 | 
 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 1,92 | 
 | 
 | 
 | 
 | 
 | 1,88 | 
 | 
 | 
 | ||
| x(3) | 1 | 100 | 
 | f x(3) | 28,534 f x(2) . | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ; | ||||
| 
 | 
 | 0 | 
 | 
 | 100 | 
 | 
 | 1 | 
 | 
 | 
 | |
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||
Следовательно, x(3) отбрасываеминаходимградиентвточке x(2) и, подставив его значение в итерационную формулу, определяем следующее направление минимизации.
| 
 | 
 | 
 | 
 | 
 | 
 | 3,84 | 
 | 
 | 
 | 
 | 
 | 
| 
 | 1,92 | 
 | 
 | 
 | 0 | 
 | 
 | 0,92 | 
 | 
 | |
| x(3) | 1 | 
 | 
 | f x(3) 0,846. | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ; | |||
| 
 | 
 | 0 | 
 | 
 | 
 | 3,84 | 
 | 
 | 0 | 
 | 
 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||
Процесс продолжается до достижения требуемой точности решения. В табл. 17 представлено 4 шага оптимизации:
Таблица 1 7
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | Величина шага | 
 | ||
| x1 | x2 | f x(k ) | f x(k ) | 
 | 
 | 
 | 
 | f x | (k ) | 
 | 
 | 
 | при переходе к | f x(k ) | ||
| 
 | 
 | 
 | ||||||||||||||
| x1 | x2 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | следующему | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | этапу | 
 | 
 | |||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | x1 | 
 | x2 | 
 | 
| 2 | 2 | 4 | 100 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | – 0,04 | 
 | – 1 | 104 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 100 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||
| 1,96 | 1 | 4 | 100 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | – 0,04 | 
 | – 1 | 28,534 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 100 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||
| 1,92 | 0 | 4 | 100 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | – 1 | 
 | 0 | 3,686 | 
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 100 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||
| 0,92 | 0 | 1,84 | 0 | 
 | 
 | 
 | 1,84 | 
 | 
 | 
 | 
 | 
 | 
 | 0,846 | ||
69
Сравнивая табл. 16 и 17, можно увидеть, что в методе наискорейшего градиентного спуска процесс минимизации происходит гораздо более крупными шагами и градиент вычисляется в меньшем числе точек.
Метод сопряженного градиента Флетчера – Ривса
Пусть Qn n – положительно-определенная матрица; тогда, если для век-
торов s(k ) s1(k ) , ..., sn(k ) и s(k 1) s(k 1) , ..., sn(k 1) выполняется равенство s(k ) Q (s(k 1) )T 0 , то векторы s(k ) и s(k 1) называются сопряженными по
направлению.
Известно, что использование сопряженных направлений на каждом шаге минимизации приводит к хорошему результату. При этом в качестве матрицы Q при вычислении сопряженных направлений применяется мат-
рица Гёссе 2 f .
Известен следующий алгоритм метода сопряженного градиента Флетчера – Ривса для минимизации функции (рис. 9):
1)задается точка x(0) ;
2)вычисляется s(0) f (x(0) ) ;
3)наk-мшагеспомощьюодномерногопоискавнаправлении s(k ) находится минимум функции f (x) , что определяет точку x(k 1) ;
4)вычисляются f (x(k 1) ) и f (x(k 1) ) ;
5)направление поиска s(k ) определяется по формуле
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | s(k 1) f (x(k 1) ) 0s(0) , | (4.6) | ||||||||
| где 0 | 
 | 
 | f (x(k 1) ) | 
 | 
 | 2 | ; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||
| 
 | 
 | f (x(k ) ) | 
 | 2 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | |||||||||||||
| 6) | после n 1 -й итерации (при k n ) процедура циклически повторя- | ||||||||||||||||||
| ется с заменой x(0) | на x(n 1) : | 
 | 
 | 
 | 
 | 
 | |||||||||||||
| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | x(k 2) x(k 1) | (k )s(k 1) , | (4.7) | |||||||
| где (k ) – шаг; | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | ||||||||
| 7) алгоритм заканчивается, когда | 
 | 
 | 
 | s(k ) | 
 | 
 | 
 | , где – произвольная малая | |||||||||||
| 
 | 
 | 
 | 
 | ||||||||||||||||
величина.
Замечание. Выбор величины шага (k ) , как и в других градиентных методах, возможен одним из следующих способов: 1) (k ) const; 2) (k ) 0
при k ; 3) целевая функция минимизируется по : min f x(k ) s(k ) .
70
