Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Исследование операций безусловная оптимизация. Курс лекций

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
842 Кб
Скачать

ту, до направления, определяемого по методу Ньютона. При поиске минимума функции, если на втором шаге получено большее значе- ние исследуемой функции, то следует увеличить параметр λ и повто- рить расчет. Если же значение функции уменьшится, то на следую- щем шаге следует уменьшить и значение параметра λ. Алгоритм за- вершается по следующему условию:

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 = G1 g.

(2.22)

Для аппроксимации обратного гессиана в формуле (2.22) могут быть выбраны разные подходы, которые и приводят к разным мето- дам переменной метрики. В довольно большой группе методов [5] матрица, обратная матрице Гессе, аппроксимируется по формуле

G1 = β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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]