
- •Глава 3 Функции нескольких переменных
- •3.1. Критерии оптимальности
- •3.2. Методы прямого поиска
- •3.2.1. Метод поиска по симплексу (s2-метод)
- •3.2.2. Метод поиска Хука — Дживса
- •3.7. Итерация поиска по методу Хука—Дживса в примере 3.3.
- •3.2.3. Метод сопряженных направлений Пауэлла
- •3.3. Градиентные методы
- •3.3.1. Метод Коши [20]
- •3.3.2. Метод Ньютона [23]
- •3.3.3. Модифицированный метод Ньютона
- •3.3.4. Метод Марквардта
- •3.3.5. Методы сопряженных градиентов
- •3.3.6. Квазиньютоновские методы
- •3.3.7. Обобщенный градиентный алгоритм
- •3.3.8. Численная аппроксимация градиентов
- •3.4. Сравнение методов и результаты вычислительных экспериментов
- •3.5. Заключение
- •Контрольные вопросы и задачи
3.3.5. Методы сопряженных градиентов
В предыдущих подразделах рассматривались методы Коши и Ньютона. Отмечалось, что метод Коши эффективен при поиске на значительных расстояниях от точки минимума х* и плохо «работает» в окрестности этой точки, тогда как метод Ньютона не отличается высокой надежностью при поиске х* из удаленной точки, однако оказывается весьма эффективным в тех случаях, когда x(k) находится вблизи точки минимума. В этом и последующих подразделах рассматриваются методы, которые обладают положительными свойствами методов Коши и Ньютона и основаны на вычислении значений только первых производных. Таким образом, эти методы, с одной стороны, отличаются высокой надежностью при поиске х* из удаленной точки х* и, с другой стороны, быстро сходятся в окрестности точки минимума.
Методы,
позволяющие получать решения задач с
квадратичными целевыми функциями
приблизительно за N
шагов
при условии использования недесятичных
дробей, будем называть квадратично
сходящимися. Среди
таких методов можно выделить класс
алгоритмов, в основе которых лежит
построение сопряженных
направлений. Выше
было сформулировано условие сопряженности
для системы направлений s(k),
k
= 1,
2, 3,…,
r
≤ N,
и
симметрической матрицы С
порядка NN.
Была
также установлена связь между построением
указанных направлений и преобразованием
произвольной квадратичной функции к
виду суммы полных
1) Задачи такого типа возникают, например, в регрессионном анализе — Прим. перев.
квадратов; сделан вывод о том, что последовательный поиск вдоль каждого из N направлений, обладающих свойством С-сопряженности, позволяет найти точку минимума квадратичной функции N переменных. Рассмотрена процедура определения системы сопряженных направлений с использованием только значений целевой функции. Ниже для получения сопряженных направлений применяются квадратичная аппроксимация f(x) и значения компонент градиента. Кроме того, потребуем, чтобы рассматриваемые методы обеспечивали убывание целевой функции при переходе от итерации к итерации.
Пусть в пространстве управляемых переменных заданы две произвольные несовпадающие точки x(0) и x(1). Градиент квадратичной функции равен
f(x)
=
q(x)
= Cx
+ b
= g(x) (3.60)
Обозначение g(x) введено здесь для удобства записи формулы. Таким образом,
g(x(0)) = Cx(0) + b,
g(x(1)) = Cx(1) + b.
Запишем изменение градиента при переходе от точки х(0) к точке х(1):
g(x)
= g(x(1))
–
g(x(0))
= C(x(1)
- x(0)), (3.61)
g(x)
= C
x
Равенство (3.61) выражает свойство квадратичных функций, которое будет использовано ниже.
В 1952 г. Эстенс и Штифель [28] предложили эффективный итерационный алгоритм для решения систем линейных уравнений, который по существу представлял собой метод сопряженных градиентов. Они рассматривали левые части линейных уравнений как компоненты градиента квадратичной функции и решали задачу минимизации этой функции. Позже Флетчер и Ривс [29] обосновали квадратичную сходимость метода и обобщили его для случая неквадратичных функций. Фрид и Метцлер [30] продемонстрировали (допустив, однако, некоторые неточности) возможности использования метода для решения линейных систем с разреженной матрицей коэффициентов. (Определение разреженной матрицы см. в приложении А.) Они подчеркнули простоту реализации метода по сравнению с другими, более общими алгоритмами, что является особенно важной характеристикой с позиций нашего изложения.
Рассмотрение метода будем проводить в предположении, что "целевая функция является квадратичной:
f(x) = q(x) = a + bT x + ½ xT Cx,
а итерации проводятся по формуле (3.42), т.е.
x
= x
+
α
s(x
).
Направления поиска на каждой итерации определяются с помощью следующих формул:
s(k)
= –
g(k)
+
(3.62)
s(0) = –g(0), (3.63)
где
g(k)
=
f(x
).
Так как после определения системы
направлений проводится последовательный
поиск вдоль каждого из направлений,
полезно напомнить, что в качестве
критерия окончания одномерного поиска
обычно используется условие
f
(x
)Ts(k)
= 0 (3.64)
Значения
,
i
=
1, 2,
3,...,k
- 1,
выбираются
таким образом, чтобы направление s(k)
было С-сопряжено
со всеми построенными ранее направлениями
поиска. Рассмотрим первое направление
s(1) = –g(1) + γ(0)s(0) = –g(1) –γ(0)g(0)
и наложим условие его сопряженности с s(0)
s(1)T Cs(0) = 0,
откуда [g(1) + γ(0)g(0)]TCs(0) = 0.
На начальной итерации
s(0)
=
;
следовательно,
[g(1)
+ γ(0)g(0)]TC[]
= 0
Используя свойство квадратичных функций (3.61), получаем
[g(1)
+ γ(0)g(0)]Tg
= 0, (3.65)
Откуда
γ(0)
= –
(gT
g(1))/(
gT
g(0)). (3.66)
Из уравнения (3.65) следует, что
g(1)Tg(1) + γ(0)g(0)Tg(1) – g(1) Tg(0) – γ(0)g(0)Tg(0) = 0.
При соответствующем выборе α(0) и с учетом формулы (3.64) имеем
g(1) Tg(0) = 0.
Таким образом,
γ(0)
=
.(3.67)
Далее определим следующее направление поиска
s(2) = –g(2) + γ(0)s(0) + γ(1)s(1).
и выберем γ(0) γ(1) таким образом, чтобы выполнялись условия
s(2)TCs(0) = 0 и s(2)Cs(1) = 0,
т. е. условия С-сопряженности направления s(2) с направлениями s(0) и s(1). С помощью формул (3.61) и (3.64) можно показать (это предоставляется читателю в качестве упражнения), что здесь γ(0) = 0, а в общем случае γ(i) = 0, i = 0, 1, 2,...,k—2, при любом значении k. Отсюда следует, что общая формула для направлений поиска может быть записана в виде, предложенном Флетчером и Ривсом:
s(k)
= –g(k)
+
s
(3.68)
Если f(x) — квадратичная функция, для нахождения точки минимума требуется определить N—1 таких направлений и провести N поисков вдоль прямой (при отсутствии ошибок округления). Если же функция f(х) не является квадратичной, количество направлений и соответствующих поисков возрастает.
Некоторые исследователи на основе опыта проведения вычислительных экспериментов предлагают после реализации каждой серии из N или N + 1 шагов возвращаться к начальной итерации алгоритма, положив s(x) = -g(x). Это предложение остается предметом для изучения, поскольку при минимизации функций общего вида в ряде случаев влечет за собой замедление сходимости. С другой стороны, циклические переходы к начальной итерации повышают надежность алгоритма, так как вероятность построения линейно зависимых направлений уменьшается. Если полученное направление оказывается линейной комбинацией одного или нескольких полученных ранее направлений, то метод может не привести к получению решения, поскольку поиск в соответствующем подпространстве RN уже проводился. Однако следует отметить, что на практике такие ситуации встречаются достаточно редко. Метод оказывается весьма эффективным при решении практических задач, характеризуется простотой однопараметрической вычислительной схемы и небольшим объемом памяти ЭВМ, необходимым для проведения поиска. Относительно невысокий уровень требований к объему памяти ЭВМ делает метод Флетчера — Ривса (ФР) и его модификации особенно полезным при решении задач большой размерности.
Пример 3.9. Метод Флетчера — Ривса
Найти точку минимума функции
f(x)
= 4x
+ 3x
–
4x
x
+ x
если
x
= [0,
0]T.
Решение.
Шаг
1.f(x)
= [8x
-4x
+1,
6x
-4x
]T,
s(0)
= –f(x(0))
= –
[1, 0]T.
Шаг 2.Поиск вдоль прямой:
x
= x
–α
f(x(0))
→ α
=
⅛,
x
= [0,
0]T
–
⅛ [1,
0]T
= [–⅛,
0]T
Шаг 3.k = 1.
s(1) = – [0, ½]T – [¼, 1] [1, 0]T = [–¼, ½]T.
Шаг 4.Поиск вдоль прямой:
x
= x
+
α
s(1)
→ α
=
¼,
x
= [–⅛,
0]T
–
¼
[¼,
½]T
= [–
,
]T,
f(x(2))
= [0, 0]T.
Таким
образом, x=
х*. Решение
получено в результате проведения двух
одномерных поисков, поскольку целевая
функция квадратичная, а ошибки округления
отсутствуют.
Миль и Кентрелл [31] обобщили подход Флетчера и Ривса, предложив формулу
x= x
+α
{–
f(x(k))
+ γ
s(x
)} (3.69)
где
αи
γ
—
параметры, значения которых определяются
на каждой итерации. Этот метод, известный
как градиентный
метод с памятью,
очень
эффективен по числу необходимых для
решения задачи итераций, но требует
большего количества вычислений значений
функции и компонент градиента, чем метод
Флетчера — Ривса. Поэтому алгоритм Миля
и Кентрелла оказывается полезным лишь
в тех случаях, когда оценивание значений
целевой функции и компонент градиента
не связано с какими-либо трудностями.
Напомним, что рассмотрение метода Флетчера — Ривса проводилось в предположении квадратичности целевой функции и отсутствия ошибок округления в процессе поиска вдоль прямой. Однако при реализации ряда методов сопряженные направления определяются без учета одного из указанных предположений (или даже обоих предположений). Среди таких методов наибольшего внимания, по-видимому, заслуживает метод, разработанный Ползком и Рибьером [32] в 1969 г. Метод основан на точной процедуре проведения поиска вдоль прямой и на более общем предположении об аппроксимации целевой функции. При этом
γ
=
, (3.70)
где, как и прежде,
g(x
)=
g(x
)
–
g(x
). (3.71)
Если α — параметр, значение которого определяется в результате поиска вдоль прямой, и γ — параметр, значение которого вычисляется по формуле (3.70), то метод сопряженных градиентов Полака — Рибьера реализуется с помощью следующих соотношений:
x= x
+α
s(x
),
s(x)
=
–
f
(x
)
+ γ
s(x
). (3.72)
Легко видеть, что единственное различие между методами Полака — Рибьера и Флетчера — Ривса заключается в способах выбора параметра γ.
Известны и другие подобные методы, которые также основаны на проведении точных вычислений при одномерном поиске и на более общей (чем квадратичная) аппроксимации целевой функции (см., например, [33, 34, 35]). Краудер и Вульф [36] в 1972 г., а затем Пауэлл [37] доказали, что методы сопряженных градиентов обладают линейной скоростью сходимости при отсутствии периодического возврата к начальной итерации. Указанные возвраты осуществляются в соответствии со специальной процедурой, которая прерывает процесс построения векторов направлений поиска, а далее вычисления продолжаются по аналогии с построением s(x(0)). Выше отмечалось, что по ряду причин наличие процедуры возврата к начальной итерации повышает устойчивость работы алгоритма, так как позволяет избежать построения линейно зависимых векторов направлений поиска. Пауэлл [38] доказал, что метод Полака — Рибьера также характеризуется линейной скоростью сходимости при отсутствии возвратов к начальной итерации, однако имеет несомненное преимущество перед методом Флетчера — Ривса при решении задач с целевыми функциями общего вида и обладает менее высокой чувствительностью к ошибкам округления при проведении одномерных поисков.
Вопросы разработки эффективных процедур и методов, обеспечивающих возврат к начальной итерации и при этом обладающих малой чувствительностью к ошибкам округления, остаются предметом активных исследований. Бил [39] предложил метод сопряженных градиентов, аналогичный стандартной процедуре Флетчера — Ривса, но вместе с тем не использующий направление вдоль градиента при возвращении к начальной итерации. Он показал, как на основе анализа направления, полученного непосредственно перед возвращением к начальной итерации, можно уменьшить объем необходимых вычислений при решении задач, требующих нескольких возвратов. Пауэлл [38] исследовал стратегию Била, а также другие стратегии возврата к начальной итерации и предложил использовать процедуру возврата либо после проведения каждой серии из N шагов, либо при выполнении неравенства
|
g(x)Tg(x
)
|
≥ 0.2 ||g(x
)||
. (3.73)
Он продемонстрировал, что стратегию Била, дополненную условием (3.73), можно успешно применять как вместе с формулой Флетчера — Ривса, так и с формулой Полака — Рибьера, и провел ряд вычислительных экспериментов, результаты которых подтверждают превосходство метода Полака — Рибьера (с возвратом). Шэнно [40] исследовал влияние ошибок округления при проведении поисков вдоль прямой и различных стратегий возврата на эффективность методов сопряженных градиентов. Он показал, что стратегия Била (с использованием соответствующей двухпараметрической формулы), дополненная предложенным Пауэллом условием возврата, приводит к существенному уменьшению требуемой точности одномерного поиска и, следовательно, к значительному повышению эффективности полной вычислительной схемы метода сопряженных градиентов. Шэнно также представил численные результаты, которые указывают на преимущество метода Полака — Рибьера с использованием процедур возврата и округления при поисках вдоль прямой. В работе [41] продемонстрирована ведущая роль методов сопряженных градиентов при решении задач нелинейного программирования большой размерности.