Рис. 1.14. Блок-схема метода покоординатного спуска с удвоением шага
Задача 2. Найти методом покоординатного спуска с одномерной минимизацией по каждой координате минимум функции
f (x) = x12 + x22 − 4x1 +5
с точностью ε = 0,01.
41
Решение. Схему решения задачи можно представить в виде следующей последовательности действий.
Выберем начальную точку с координатами: x10 =1, x20 =1.
Значение целевой функции, соответствующее этой точке f 0 = 4 .
Цикл k = 0 . Итерация i =1:
|
|
|
|
x1 − меняется; |
||||
|
|
|
|
x2 =1, |
|
|
|
|
необходимо найти min{f (x1 ) = x12 − 4x1 + 7}. |
||||||||
x1 |
|
|
|
|
|
|||
Из условия экстремума: |
|
|
|
|
|
|||
|
|
∂f |
= 2x − 4 = 0 → x = 2 . |
|||||
|
|
|
||||||
|
|
∂x1 |
1 |
1 |
|
|
||
Итак: |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
x |
= 2; |
f 1 = 3, |
|
f 1 − f 0 |
|
=1 > ε . |
||
1 |
|
|
|
|
|
|||
x2 |
=1, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Итерация i = 2 :
x1 = 2;
x2 −меняется,
необходимо найти min{f (x2 ) = x22 +1}.
x2
Из условия экстремума:
∂∂xf2 = 2x2 = 0 → x2 = 0 .
Итак: |
|
|
|
|
|
|
|
x |
= 2; |
f 2 |
=1, |
|
f 2 − f 1 |
|
= 2 > ε . |
|
|
||||||
1 |
|
|
|
||||
x2 = 0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Цикл k =1 . |
|
|
|
|
|
|
|
Соответственно: |
|
|
|
|
|
|
|
итерация i =1: |
|
|
|
|
|
|
|
x1 − меняется;
x2 = 0.
42
Очевидно, целевая функция в этом случае принимает вид:
{ f (x1 ) = x12 − 4x1 +5}.
Минимум этой функции достигается при x1 = 2 , а само
значение критерия |
f 3 = f (x |
= 2, x |
= 0) =1. |
|||||||||
Итак: |
|
|
|
|
|
1 |
2 |
|
|
|
||
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
= 2; |
f 3 |
=1, |
|
f |
3 − f 2 |
|
= 0 < ε . |
|
|
|
|
|
|
|
|||||||
|
|
|
|
1 |
|
|
|
|||||
|
|
|
* |
x2 = 0, |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
= 0; |
|
|
|
|
|
|
|
|
||
Ответ: |
x |
|
f * =1. |
|
|
|
|
|
|
|||
|
1 |
|
|
|
|
|
|
|
||||
|
|
|
* |
= 0. |
|
|
|
|
|
|
|
|
|
x2 |
|
|
|
|
|
|
|
|
|||
Линии уровня, соответствующие рассматриваемой функции приведены на рис. 1.15.
Рис. 1.15. Линии уровня функции
f (x) = x12 + x22 −4x1 +5
1.3.1.2. Метод ортонормальных направлений (метод Розенброка)
В этом методе в каждом цикле производится поиск вдоль n взаимно ортогональных направлений. После завершения цикла с помощью процедуры Грама – Шмидта строится новая система ортогональных направлений. Преимущество этого метода состоит в следующем. Если целевая функция имеет узкий искривленный гребень (точнее, овраг), то поиск по n взаимно ортогональным направлениям эффективен тем, что результирующее направление стремится расположиться вдоль оси оврага. Это существенно ускоряет процесс по сравнению с методом покоординатного спуска.
43
Рассмотрим процедуры, выполняемые на k -м цикле метода. Пусть в начале цикла имеется точка x0k , числа λ1 , λ2 , …, λn –
|
|
|
ˆk |
ˆk |
ˆk |
– единичные |
векторы, |
задающие |
|||||
длины шагов, S1 , |
S2 |
,…, Sn |
|||||||||||
направления |
|
поиска |
экстремума. |
(Для |
первого |
цикла |
x01 , |
||||||
λ1 , λ2 , …, λ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 |
S2 ,…, Sn . В результате будет получена новая точка |
||
x0k и совокупность шагов λ1 , λ2 , …, λn тоже новая. Затем снова
ˆk |
и задаем шаг либо αλ1 , либо |
возвращаемся к направлению S1 |
βλ1 в зависимости от того, успешным или неуспешным был шаг до
этого.
Процесс поиска вдоль направления повторяется сначала. Это происходит до тех пор, пока за успешным движением на каждом направлении не последует неудача. На этом заканчивается первый этап цикла.
Второй этап цикла состоит в выборе исходных данных для следующего цикла.
В качестве начальной точки следующего цикла x0k +1 берется последняя успешная точка.
В качестве шагов λi , i =1, n, – последние получившиеся значения. После этого выбираются новые направления.
44
Строится система векторов:
|
ˆk |
ˆk |
ˆk |
|
|
q1 = Λ1S1 |
+ Λ2 S2 +…+ Λn Sn ; |
|
|
||
q2 |
= |
ˆk |
ˆk |
; |
|
Λ2 S2 |
+…+ Λn Sn |
|
|||
… |
|
|
ˆk |
|
|
qn |
= |
|
, |
||
|
Λn Sn |
||||
здесь Λi – алгебраическая сумма длин успешных шагов по i-му
направлению.
Если изобразить условно направления на плоскости, то получим схему, показанную на рис. 1.16.
Рис. 1.16. Графическое представление метода Розенброка на одной из итераций
Как видно из рисунка, вектор q1 соединяет точку, в которой
процесс находился в начале цикла, с точкой, в которую он попал в конце цикла.
Данная система векторов q1 ,…, qn ортогонализируется с
помощью процедуры Грама – Шмидта.
В качестве начального (первого) направления принимается q1
(так как это направление располагается вдоль предполагаемого гребня функции).
Процедура ортогонализации Грама – Шмидта. Пусть имеем n
векторов q1 , …, qn . Необходимо получить n единичных
ˆk |
ˆk |
ортогональных векторов S1 |
,…, Sn . |
|
45 |