Загребаев Методы матпрограммирования 2007
.pdf3.3.1.2. Метод ортонормальных направлений (метод Розенброка)
В этом методе в каждом цикле производится поиск вдоль n взаимно ортогональных направлений. После завершения цикла с помощью процедуры Грама-Шмидта строится новая система ортогональных направлений. Преимущество этого метода состоит в следующем. Если целевая функция имеет узкий искривленный гребень (точнее, овраг), то поиск по n взаимно ортогональным направлениям эффективен тем, что результирующее направление стремится расположиться вдоль оси оврага. Это существенно ускоряет процесс по сравнению с методом покоординатного спуска.
Рассмотрим процедуры, выполняемые на k -м цикле метода. Пусть в начале цикла имеется точка x0k , числа λ1 , λ2 , K, λn –
ˆ k |
ˆ k |
ˆ k |
– единичные векторы, задающие на- |
длины шагов, S1 |
, S2 |
, K, Sn |
|
правления поиска |
экстремума. (Для первого цикла x01 , |
λ1 , λ2 , K, λn выбираются произвольно, направления, как правило, совпадают с координатными осями.)
|
ˆ k |
делается шаг λ1 λ1 . |
|
|
|
||
В направлении S1 |
|
|
|
||||
k |
ˆ k |
k |
то шаг считается успешным и по- |
||||
Если f (x0 |
+ λ1S1 ) ≤ f (x0 ) , |
||||||
лученная точка занимает место |
k |
k |
k |
ˆ k |
. Величина |
||
x0 , |
т.е. x0 = x0 |
+ λ1S1 |
|||||
λ1 умножается на число α (α > 1, обычно |
α = 3), |
т.е. теперь |
|||||
λ1 = αλ1 . |
ˆ k |
|
|
|
|
|
|
k |
k |
|
шаг считается неуспешным, |
||||
Если f (x0 |
+ λ1S1 |
) > f (x0 ) , то |
|||||
точка x0k остается без изменений, |
а величина |
|
λ1 умножается на |
число β (β < 0, обычно β = −0,5 ), т.е. λ1 = βλ1 .
Далее та же самая процедура повторяется для остальных на-
ˆ k |
ˆ k |
. В результате будет получена новая точка |
k |
правлений S2 |
, K, Sn |
x0 |
и совокупность шагов λ1 , λ2 , K, λn тоже новая. Затем снова воз-
ˆ k |
и задаем шаг либо αλ1 , либо βλ1 в |
вращаемся к направлению S1 |
зависимости от того успешным или неуспешным был шаг до этого.
191
Процесс поиска вдоль направления повторяется сначала. Это происходит до тех пор, пока за успешным движением на каждом направлении не последует неудача. На этом заканчивается первый этап цикла.
Второй этап цикла состоит в выборе исходных данных для следующего цикла.
Вкачестве начальной точки следующего цикла x0k +1 берется последняя успешная точка.
Вкачестве шагов λi , i =1, n, – последние получившиеся значе-
ния. После этого выбираются новые направления. Строится система векторов:
ˆ k |
ˆ k |
ˆ k |
; |
q1 = Λ1S1 |
+ Λ2 S2 |
+K+ Λn Sn |
|
q2 = |
ˆ k |
ˆ k |
; |
Λ2 S2 |
+K+ Λn Sn |
||
K |
|
|
|
qn = |
|
ˆ k |
, |
|
Λn Sn |
здесь Λi – алгебраическая сумма длин успешных шагов по i-му
направлению.
Если изобразить условно направления на плоскости, то получим следующий рисунок (рис. 3.16).
Рис. 3.16. Графическое представление метода Розенброка на одной из итераций
Как видно из рисунка, вектор q1 соединяет точку, в которой
процесс находился в начале цикла, с точкой, в которую он попал в конце цикла.
192
Данная система векторов q1,K, qn ортогонализируется с помощью процедуры Грама-Шмидта.
В качестве начального (первого) направления принимается q1
(так как это направление располагается вдоль предполагаемого гребня функции).
Процедура ортогонализации Грама-Шмидта. Пусть имеем n
векторов q1 , K, qn . Необходимо получить n
ˆ k |
ˆ k |
нальных векторов S1 |
, K, Sn . |
Будем находить эти вектора по формуле:
единичных ортого-
ˆ |
|
|
|
|
|
yi |
|
|
|
|
Si |
= |
|
|
|
|
|
|
|
, где |
yi – |
|
|
|
|
yi |
|
|
||||
|
|
|
1 |
|
|||||||
вспомогательный вектор, i = |
1, n |
, |
|
yi |
|
= yi , yi |
|
– норма вектора. |
|
|
2 |
Вектора yi вычисляются по рекуррентным формулам:
y1 = q1,
…
|
i−1 |
qi , y j |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
yi = qi − ∑ |
|
|
y j , i =1, n; |
||||||
|
y j , y j |
||||||||
|
j=1 |
|
|
|
|
|
|
||
ˆ |
= q1, |
|
|
|
|
|
|
|
|
S1 |
|
|
|
|
|
|
|
||
… |
|
|
ˆ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ˆ |
i−1 |
qi , S j |
|
ˆ |
|
|
|||
|
|
||||||||
Si |
= qi − ∑ |
ˆ ˆ |
|
S j , i =1, n . |
|||||
|
j=1 |
S j , S j |
|
|
|
|
|
|
Блок-схема алгоритма может быть представлена в виде, изображенном на рис. 3.17. На рисунке использованы следующие обозначения:
k – номер цикла;
|
|
|
ˆ |
|
|
|
|
i =1, n – номер итерации при движениях по Si ; |
|||
j – счетчик неудачных шагов; |
|||
x0 |
|
– это x в начале цикла; |
|
x |
– текущий аргумент. |
193
Рис. 3.18. Определение сопряженных направлений (n = 2)
Может возникнуть вопрос, зачем понадобилось тратить усилия на минимизацию квадратичной функции, если она минимизируется
аналитически и дает результат x* = −Q−1b ?
Квадратичные функции рассматриваются по двум причинам. Во-первых, если метод не пригоден для квадратичной функции, то очень мало шансов, что он пригоден для функций с более сложной структурой. Поэтому любой метод, как правило, вначале испы-
тывают на квадратичной функции.
Во-вторых, не квадратичную функцию можно аппроксимировать квадратичной функцией, если ограничиться разложением в ряд Тейлора членами не выше второго порядка. При этом минимум функции может быть получен посредством минимизации последовательности квадратичных функций, аппроксимирующих исходную функцию относительно точек, последовательно приближающих к точке истинного минимума.
Метод Пауэлла основывается на следующей особенности: любая прямая, которая проходит через точку минимума квадратичной формы, пересекает под равными углами поверхности уровня. Очевидно, это эквивалентно тому, что все касательные, проведенные к линиям уровня в точках их пересечения прямой, проходящей через экстремум, будут параллельны. На рис. 3.19 приведена иллюстрация этого свойства для квадратичной функции f (x) .
196
Рис. 3.19. Расположение касательных к линиям уровня в точках x1, x2
Из этого следует, что если x1 и x2 – два минимума, расположенные на двух параллельных направлениях, то минимум квадратичной функции нужно искать на направлении x1 − x2 . Причем
легко убедится, что это направление является Q-сопряженным с S. Градиент квадратичной функции:
f (x) = b + Qx .
Поскольку x i – это точки минимума на направлении S, градиент функции в этих точках ортогонален к S, т.е.
S т f (x1 ) = 0 = S т (b + Qx1 ),
S т f (x 2 ) = 0 = S т (b + Qx 2 ).
Вычитая второе уравнение из первого, получим
0 = S тQ(x1 − x 2 ) ,
т.е. S и (x1 − x 2 ) – Q-сопряженные направления.
Алгоритм метода Пауэлла.
1. Выбрать в качестве начальных направлений S10 , S20 , K, Sn0 , совпадающие с координатными осями (k = 0). Выбрать начальную точку поиска x0k .
197
Ввод нач. данных ε, n, x0
i = |
1, n |
Si = ei |
|
|
k = 0 |
|
|
x = x0 , i =1 |
Определение λ*i из
i = i +1 |
min f (x + λi Si ) |
|
||||||||||
|
|
λ |
|
|
||||||||
|
|
|
|
x = x + λ*i Si |
|
|||||||
|
|
|
|
i < n |
|
|
||||||
Да |
|
|
|
|
|
|
|
|
|
Нет |
|
|
|
|
|
|
|
|
|
|
|
|
|
Да |
|
|
|
|
|
x0 − x |
|
|
|
≤ ε |
x* ≈ x |
Выход |
||
|
|
|
|
|
|
|||||||
Нет |
|
|
||||||||||
|
|
|
|
Si = x − x0 |
|
|
||||||
Определение λ*i |
из |
|
||||||||||
|
min f (x + λi Si ) |
|
||||||||||
|
|
λ |
|
|
||||||||
|
|
|
0 = |
|
+ λ*i Si |
|
|
|||||
|
x |
x |
|
|
||||||||
|
|
|
|
Sn = S |
|
|
||||||
|
|
|
|
i = 1 |
|
|
||||||
i = i +1 |
|
|
|
Si = Si+1 |
|
|
||||||
Да |
|
|
|
i < n −1 |
|
|
||||||
|
|
|
|
|
|
|
|
|
|
Нет |
|
k = k + 1
Рис. 3.20. Блок-схема алгоритма метода Пауэлла
199