Исследование операций безусловная оптимизация. Курс лекций
.pdf
ту, до направления, определяемого по методу Ньютона. При поиске минимума функции, если на втором шаге получено большее значе- ние исследуемой функции, то следует увеличить параметр λ и повто- рить расчет. Если же значение функции уменьшится, то на следую- щем шаге следует уменьшить и значение параметра λ. Алгоритм за- вершается по следующему условию:
f (x) ≤ ε.
На каждом шаге алгоритма необходимо вычислять не только гради- енты функции первого и второго порядка, но и значение самой функции.
Рассмотрим применение метода Марквардта на данных примера 2.3.
Пример 2.4. Пусть х(0) = (4; –3) , ε = (1; 1) и λ0 = 104.
f (x(0) ) = 64;
f (x(0) ) = (49;− 7).
Решение. Найдем матрицу Гессе:
|
|
∂2 f |
|
= 6x ; |
|
|
∂2 f |
|
= −1; |
||
|
|
∂x 2 |
|
|
|
∂x ∂x |
|
||||
|
|
1 |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||
|
1 |
|
|
|
1 |
2 |
|
|
|||
|
|
∂2 f |
|
= 2; |
|
∂2 f |
|
|
= −1. |
||
|
|
∂x 2 |
|
|
∂x ∂x |
||||||
|
|
|
|
|
|
|
|||||
|
2 |
|
|
|
2 |
1 |
|
|
|
||
и в начальной точке имеем: |
|
|
|
|
|
|
|
||||
|
|
|
|
H = 24 |
|
− 1 . |
|||||
|
|
|
|
−1 |
2 |
|
|||||
Известно, что s(0) |
= −(H (0) + λ(0) I )−1 f (x(0) ). |
||||||||||
Подставим вычисленные значения в эту формулу: |
|||||||||||
s(0) |
|
|
24 − 1 10 |
|
|
−1 |
|||||
= − |
|
|
+ |
|
104 |
(49;− 7) |
|||||
|
|
|
−12 |
|
01 |
|
|
|
|||
или s(0) = (−0,000049; − 0,000007), тогда
51
x(1) = x(0) + s(0) = (4;− 3) + (−0,000049; − 0,000007) = = (3,99995; − 3,000007);
f (x(1) ) = 63,9976; f (x(1) ) = (48,9988; − 6,99996).
Так как значение функции уменьшилось, то λ1 = λ0/2 = 5000 и продолжаем поиск. Результаты вычислений по методу Марквардта представлены в табл. 2.4.
|
|
|
|
|
Таблица 2.4 |
|
|
|
Результаты вычислений методом Марквардта |
|
|
||
|
|
|
|
|
|
|
k |
λ(k) |
x(k) |
f'(k) |
|
f(k) |
|
0 |
10000 |
(4; –3) |
(49; –7) |
|
64 |
|
1 |
5000 |
(3,99995; –3,000007) |
(48,99; –6,99) |
|
63,99 |
|
2 |
2500 |
(3,99; –2,9986) |
(48,76; –6,987) |
|
63,5 |
|
3 |
1250 |
(3,966; –2,995) |
(48,18; –6,96) |
|
62,31 |
|
4 |
625 |
(3,928; –2,989) |
(47,28; –6,91) |
|
60,46 |
|
5 |
312 |
(3,852; –2,985) |
(45,5 –6,82) |
|
56,91 |
|
6 |
156 |
(3,715; –2,963) |
(42,37; –6,64) |
|
50,74 |
|
7 |
78 |
(3,48; –2,92) |
(37,25; –6,32) |
|
41,11 |
|
8 |
39 |
(3,09; –2,84) |
(29,48; –5,77) |
|
27,64 |
|
9 |
20 |
(2,59; –2,71) |
(20.83; –5,01) |
|
14,43 |
|
10 |
10 |
(2,0; –2,51) |
(12,51; –4,02) |
|
3,79 |
|
11 |
5 |
(1,44; –2,22) |
(6,44; –2,88) |
|
–2,43 |
|
12 |
2,6 |
(1,02; –1,89) |
(3,01; –1,8) |
|
–5,15 |
|
13 |
1,3 |
(0,7; –1,57) |
(1,04; –0,84) |
|
–6,2 |
|
14 |
|
(0,56; –1,37) |
(0,32; –0,3) |
|
–6,41 |
|
Из таблицы видно, что на первых шагах значение функции уменьшалось медленно, затем, начиная с шестого шага, скорость уменьшения возросла вплоть до 13 шага, после которого выполни- лось условие окончания поиска. Итак, решением задачи будет:
x* = (0,56; –1,37), f* = –6,41.
2.3.4. Методы сопряженных градиентов
Известно, что в окрестности точки оптимума любая нелинейная функция может быть аппроксимирована квадратичной функцией. На этом свойстве квадратичной функции построен ряд алгоритмов по- иска оптимума, к числу которых относятся и методы сопряженных градиентов. На примере предыдущих методов видно, что для улуч- шения сходимости на каждом шаге алгоритма следует определять наилучшее направление поиска. Для квадратичных функций наи-
52
лучшим направлением является направление, сопряженное с преды- дущим направлением поиска.
Напомним, что два вектора x и y называют С-сопряженными (или сопряженными по отношению к симметрической матрице С), если скалярное произведение x и Сy равно нулю, т.е. xTСy = 0.
Методы сопряженных градиентов основаны на использовании со- пряженных направлений при поиске оптимума функции. Вычисление сопряженных направлений можно осуществлять разными способами, например, использовать методы линейной алгебры, в частности, процесс ортогонализации Грамма – Шмидта. Наиболее известным методом вычисления сопряженных направлений является метод Флетчера – Ривса, в котором используется квадратичная аппрокси- мация целевой функции и значения компонент ее градиента.
Будем вначале предполагать, что целевая функция является квад- ратичной:
f (x) = a + bt x + 1 xtGx. 2
Для удобства введем следующие обозначения:
f (x(k ) ) = g(k ) ;
2 f (x(k ) ) = G(k ) .
Поиск оптимума будет производиться по формуле (2.10):
x(k +1) = x(k ) + α(k ) s(x(k ) ).
На первой итерации в качестве направления поиска s(0) используется направление, противоположное градиенту функции:
s(0) = − g(0) .
На каждой следующей итерации направление поиска определяется по формуле
k −1
s(k ) = − g(k ) + ∑γ(i) s(i) . i=0
Значения γ(i) , i = 1, 2, ..., k − 1 выбираются таким образом, чтобы на-
правление s(k ) было G-сопряженно со всеми построенными ранее направлениями поиска.
53
Рассмотрим первое направление:
s(1) = − g(1) + γ(0) s(0) = − g(1) − γ(0) g(0) = −(g(1) + γ(0) g(0) ).
Данное направление должно быть G-сопряженно с начальным на- правлением, т.е.
s(1)T Gs(0) = 0
или
[g(1) + γ(0) g(0) ]T Gs(0) = 0.
На начальной итерации согласно формуле (2.8) имеем
s(0) = α(0)x ,
тогда
[g(1) + γ(0) g(0) ]T G α(0)x = 0.
Известно, что изменение градиента квадратичных функций при
переходе из точки s(k ) |
в точку x(k +1) |
|
|
вычисляется по формуле (дока- |
||||||
зательство приведено в работе [3]) |
|
|
|
|
||||||
|
g = G x. |
|
||||||||
Подставив это выражение в предыдущую формулу, получим |
||||||||||
[g(1) + γ(0) g(0) ]T |
g = 0, |
|
|
|
|
|
|
|
||
g(1)T g(1) + γ(0) g(0)T g(1) − g(1)T g(0) − γ(0) g(0)T g(0) = 0. |
||||||||||
Так как g(1)T g(0) = 0 , то получаем следующую формулу: |
||||||||||
|
γ(0) = |
|
|
|
g(1) |
|
|
2 |
. |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|||
|
|
|
|
g(0) |
|
|
2 |
|||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
||
Далее необходимо определить следующее направление поиска:
s(2) = − g(2) + γ(0) s(0) + γ(1) s(1) .
Выбираем γ(0) и γ(1) таким образом, чтобы выполнялись условия G-сопряженности направления s(2) с направлениями s(0) и s(1).
54
Общая формула для определения направлений поиска, предло- женная Флетчером – Ривсом, выглядит следующим образом:
s(k ) = − g(k ) + |
|
|
g(k ) |
|
|
|
2 |
S(k −1) . |
(2.18) |
|
|
|
|
|
|||||||
|
g(k −1) |
|
|
2 |
||||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|
||||
Таким образом, вычисляя градиенты исследуемой функции и на- ходя сопряженные направления, можно определять точку следующе- го приближения по формуле (2.8), т.е. проводить одномерный поиск относительно переменной α(k).
Формула (2.18) означает, что новое сопряженное направление по- лучается сложением антиградиента в точке поворота и предыдущего направления движения, умноженного на коэффициент β, представ- ленный формулой
β(k ) = |
|
|
g(k ) |
|
|
|
2 |
. |
(2.19) |
|
|
|
|
|
|||||||
|
g(k −1) |
|
|
2 |
||||||
|
|
|
|
|
||||||
|
|
|
|
|
|
|
||||
Направления, вычисленные по формуле (2.18), оказываются со- пряженными, если минимизируемая функция является квадратичной, и тогда метод сопряженных градиентов сходится за n шагов, где n – размерность задачи. На рис. 2.5 изображена траектория движения в точку минимума при использовании метода сопряженных градиентов.
Рис. 2.5. Траектория движения в точку минимума при использовании метода сопряженных градиентов
55
Флетчер и Ривс предлагают возобновлять алгоритмическую про- цедуру через каждые n + 1 шагов. Рестарт алгоритмической проце- дуры необходим, чтобы «забыть» последнее направление поиска и стартовать алгоритм заново в направлении наискорейшего спуска.
Если исследуемая функция неквадратична, то метод Флетчера – Ривса перестает быть конечным и становится итеративным, так как известно, что любую гладкую функцию в окрестностях точки своего минимума можно аппроксимировать квадратичной функцией.
Существует еще одна формула для определения сопряженных на- правлений неквадратичной функции, предложенная Полаком и Рибь- ером в 1969 году:
β(k ) = |
(g(k ) − g(k −1) )T g(k ) |
. |
(2.20) |
||||||
|
|
|
|
|
|
||||
|
|
g |
(k −1) |
|
|
|
2 |
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Если α – параметр, значение которого определяется в результате поиска вдоль прямой, и β – параметр, значение которого вычисляется по формуле (2.20), то метод Полака – Рибьера реализуется с помо- щью следующих соотношений:
x(k +1) = x(k ) + α(k ) s(x(k ) ); s(k ) = − g(k ) + β(k ) s(k −1) .
Разница между этими двумя методами состоит только в способе вычисления коэффициента β(k).
Метод Флетчера – Ривса сходится, если начальная точка доста- точно близка к требуемому минимуму. Метод Полака – Рибьера, не- смотря на его высокую скорость сходимости, имеет тот недостаток, что в редких случаях он может бесконечно циклиться.
Для реализации одномерного поиска, в частности, можно вос- пользоваться методом Фибоначчи, методом золотого сечения или методом Ньютона – Рафсона, который дает наилучшую сходимость. Методы сопряженных градиентов являются методами первого по- рядка. Они выгодно отличаются от обычных градиентных методов. Например, метод наискорейшего спуска и метод координатного спуска для квадратичной функции сходятся лишь в пределе, в то время как метод сопряженных градиентов оптимизирует квадратич- ную функцию за конечное число итераций. Согласно исследованиям, приведенным в [4], при оптимизации функций общего вида метод
56
сопряженных направлений сходится в 4–5 раз быстрее метода наис- корейшего спуска. При этом в отличие от методов второго порядка не требуется трудоемких вычислений вторых частных производных.
Существует еще несколько методов поиска, использующих со- пряженные направления и градиенты, например алгоритм Миля и Кентрелла, а также другие методы, основанные на этих идеях.
Рассмотрим пример.
Пример 2.5. Найти минимум функции методом Флетчера – Ривса:
f (x) = 4x12 + 3x22 − 4x1x2 + x1; x(0) = (0; 0).
Решение. Найдем градиент:
f (x) = (8x1 − 4x2 + 1; 6x2 − 4x1 ).
На первом шаге выбираем направление, противоположное градиенту:
S (0) = −f (x(0) )
в точке х(0): f (x(0) = (1; 0), тогда S(0) = – (1;0). Найдем новую точку по формуле (2.8):
x(1) = (0,0) − α(0) (1; 0) = (0 − α(0) ; 0) = (−α(0) ; 0).
Подставив это значение в функцию, получим
f (α(0) ) = 4(α(0) )2 + 3 02 − 4α(0) 0 − α(0) = 4(α(0) )2 − α(0) → min.
Решая эту задачу одномерной оптимизации методом Ньютона – Раф-
сона, |
получим α(0) = |
1 |
, |
тогда |
x(1) = (0; 0) − |
1 |
(1; 0) = (− |
1 |
; 0). Найдем |
|||||
|
|
|
||||||||||||
|
|
|
8 |
|
|
|
8 |
8 |
|
|||||
градиент в этой точке: |
f (x(1) ) = (0; |
1 |
) . Теперь определим новое |
|||||||||||
|
||||||||||||||
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
направление поиска по формуле Флетчера – Ривса (2.18): |
||||||||||||||
S(1) |
= −(0; 1/ 2) − |
(0; 1/ 2)2 |
(1; 0) |
= −(0; 1/ 2) − (1/ 4; 1)(1; 0) = (−1/ 4; 1/ 2). |
||||||||||
|
||||||||||||||
|
(1; |
0)2 |
|
|
|
|
|
|
|
|
|
|||
Вычислим следующую точку: |
|
|
|
|
|
|
|
|||||||
|
|
x(2) |
= (−1/8; 0) + α(1) ( − 1/4; 1/2). |
|||||||||||
57
Подставив это значение в функцию и решив задачу одномерной оп- тимизации относительно α(1) , получим α(1) = 1/ 4 , тогда
x(2) = (−1/8; 0) − 1/ 4(1/ 4; 1/ 2) = (−3/16; − 1/8).
Найдем градиент в новой точке: f (x(2) ) = (0; 0) , таким образом,
можно утверждать, что х(2) = х* – точка минимума исследуемой функции и f* = –23/32.
Рассмотрим решение того же примера методом Полака – Рибьера. Пример 2.6. Первые шаги алгоритма поиска минимума методом Полака – Рибьера совпадают с шагами метода Флетчера – Ривса. По-
сле того как найдена точка x(1) = (−1/8 ; 0)T и вычислен градиент в
ней f (x(1) ) = g(1) = (0; 1/2)T , для определения нового направления поиска необходимо вычислить ß1 по формуле (2.20):
g(1) |
= g(1) − g(0) = (0; 1/2)T − (1; 0)T = (−1; 1/2)T . |
|||||||||||||||
Тогда |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
β(1) = |
(−1; 1/ 2)T (0; 1/ 2) |
= |
1 |
. |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
2 |
|
||||
|
|
|
|
|
|
|
1; 0 |
|
|
|
|
4 |
|
|||
|
|
|
|
|
|
|
||||||||||
Найдем новое направление: |
|
|
|
|||||||||||||
s(1) |
= −(0; 1/ 2)T − |
1 |
(1; 0)T = (−1/ 4; − 1/ 2)T . |
|||||||||||||
|
||||||||||||||||
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Вычислим следующую точку: |
|
|
|
|||||||||||||
|
x(2) = (−1/8; 0)T + α(1) ( − 1/4; |
− 1/2)T . |
||||||||||||||
Подставив это значение в функцию и решив задачу одномерной оптимизации относительно α(1), получим α(1) = 1/4, тогда
x(2) = (−1/8; 0)T − 1/ 4(1/ 4; 1/ 2)T = (−3/16; − 1/8)T .
Мы получили тот же результат, что и при использовании метода Флет- чера – Ривса. Найдем градиент в новой точке: f (x(2) ) = (0; 0) , таким
образом, можно утверждать, что х(2) = х* – точка минимума иссле- дуемой функции и f* = –23/32.
58
2.3.5. Квазиньютоновские методы
Данное название связано с тем, что квазиньютоновские методы дают хорошую сходимость в окрестности точки оптимума, как и ме- тод Ньютона, но для их реализации не требуется вычисление гессиа- на целевой функции.
Квазиньютоновские методы также основаны на свойствах квадра- тичных функций и используют градиент целевой функции.
Базовой формулой для определения текущей точки приближения здесь так же, как и в предыдущих методах, является формула (2.8). В качестве направления поиска S(k) выбирается направление по сле- дующей формуле:
S (k) = –А(k)g(k), |
(2.21) |
где А(k) – матрица порядка n × n, которая носит название метрики.
Эта матрица изменяется на каждом шаге, поэтому данный метод иногда называют методом переменной метрики. Матрица текущего приближения строится таким образом, чтобы последовательность матриц А(0), А(1), А(3), … , А(k+1) давала некоторую аппроксимацию об- ратного гессиана. Запишем формулу (2.8) с учетом формулы (2.21):
x(k +1) = x(k ) + α(k ) (− A(k ) g(k ) ).
Очевидно, что для определения α(k) необходимо провести одно- мерный поиск вдоль прямой x(k ) + α(k ) (− A(k ) g(k ) ) , т.е. найти мини- мум функции
f x(k ) + α(k ) (− A(k ) g(k ) ) .
Рассмотрим на квадратичных функциях соотношения для получе- ния формул пересчета матриц А(k). Известно, что для квадратичной функции выполняется соотношение
x = G−1 g. |
(2.22) |
Для аппроксимации обратного гессиана в формуле (2.22) могут быть выбраны разные подходы, которые и приводят к разным мето- дам переменной метрики. В довольно большой группе методов [5] матрица, обратная матрице Гессе, аппроксимируется по формуле
G−1 = βA(k ) , |
(2.23) |
где β – масштабный множитель, константа, обычно равная единице.
59
На первом шаге алгоритма в качестве А(0) рекомендуется исполь- зовать единичную матрицу, хотя А(0) может быть и любой симметри- ческой положительно определенной матрицей. Для следующего при- ближения используем рекуррентное соотношение
|
A(k +1) = A(k ) + A(k ) |
, |
(2.24) |
|
c |
|
|
где A(k ) |
– корректирующая матрица. |
|
|
c |
|
|
|
Пусть новое приближение удовлетворяет формуле (2.22), тогда с учетом (2.23) имеем
x(k ) = βA(k +1) g(k ) ,
где x(k ) = x(k +1) − x(k ) ; g(k ) = g(k +1) − g(k ) .
Подставляя выражение (2.24) в формулу (2.25), получаем
|
|
x(k ) = β(A(k ) + A(k ) ) g(k ) , |
||||
|
|
|
|
|
c |
|
или |
|
|
|
|
||
|
1 |
x(k ) = A(k ) |
g(k ) + A(k ) |
g(k ) , |
||
|
|
|||||
|
β |
|
|
c |
|
|
|
|
|
|
|
||
или |
|
|
|
|
||
|
A(k ) |
g(k ) = |
1 |
x(k ) − A(k ) |
g(k ) . |
|
|
|
|||||
|
|
c |
|
β |
|
|
|
|
|
|
|
|
|
(2.25)
(2.26)
Формула (2.26) представляет собой уравнение, которое необходи- мо разрешить относительно Ac(k ) Как показано в работе [5], если вве-
сти два произвольных вектора y и z размерности n × 1, то прямой подстановкой результата можно показать, что уравнение (2.26) имеет следующее решение:
A(k ) = |
1 |
|
x(k ) yT |
− |
A(k ) g(k ) zT |
. |
(2.27) |
|
|
|
|||||
c |
β yT g(k ) |
|
zT g(k ) |
|
|||
|
|
|
|||||
Формула (2.27) определяет некоторое семейство решений в зави- симости от определения векторов y и z. Если для β = 1, определим векторы y и z по следующим формулам:
60
