Матеріали взято з книги: М. І. Жалдак, Ю. В. Триус Основи теорії і методів оптимізації: Навчальний посібник. – Черкаси: Брама-Україна, 2005. – С. 349-351.
Метод покоординатного спуску. Метод покоординатного спуску. Ідея методу покоординатного спуску полягає в тому, що відбувається спуск вздовж ламаної лінії, яка утворюється з відрізків прямих, паралельних до осей координат (рис. 28.5).
x2
x* x*
–
(1,1)
x
e2
+
–
+
x(1,2)
e1
x(0,1) x(0,2)
x1
Рис. 28.5. Цей метод є одним з найпростіших серед детермінованих способів визначення напряму спуску, оскільки за цей напрям вибирається один з координатних векторів e1 , e2 , ..., en , внаслідок чого в кожній точці ітераційного процесу змінюється лише одна координата. Існують численні варіанти методу покоординатного спуску (див., наприклад, [18], [57], [73]). Розглянемо один з таких варіантів. Ітераційний процес методу покоординатного спуску складається з «внутрішніх» і «зовнішніх» ітерацій. Одна зовнішня ітерація містить n внутрішніх ітерацій, на яких по черзі відбувається спуск паралельно до осей координат. Опишемо початкову зовнішню ітерацію. Нехай x ( 0,1) ( x1( 0,1) , x2( 0,1) ,..., xn( 0,1) ) – початкове наближення, де перший верхній індекс визначає номер зовнішньої ітерації, а другий – номер тієї координати, за якою відбувається спуск. Наступна точка внутрішньої ітерації визначається за формулою x ( 0, 2 ) x ( 0,1) h0,1 g ( 0,1) , де g ( 0,1) e1 або g ( 0,1) e1 , при цьому за напрям руху g ( 0,1) обирається той з двох напрямів e1 або e1 , який є напрямом спадання цільової функції в точці x ( 0,1) . Крок h01 добирається так, щоб було f ( x ( 0, 2 ) ) f ( x ( 0,1) ) . Після чого наступна внутрішня ітерація відбувається при g ( 0, 2 ) e2 або g ( 0, 2 ) e2 і т.д. Після n внутрішніх ітерацій знаходиться точка x
(1,1)
(див. рис. 28.5), яка визначається за формулою
x (1,1) x ( 0,n ) h0,n g ( 0,n ) , де g ( 0,n ) en або g ( 0,n ) en . Нехай на k-й зовнішній ітерації відбувається спуск за j-ю координатою. Тоді рекурентна формула, яка визначає наступне наближення до точки мінімуму, має такий вигляд:
x ( k , j 1) x ( k , j ) hk , j g ( k , j ) ,
(28.29)
де g ( k , j ) e j або g ( k , j ) e j , j 1, n , k 0,1,2,... , або, в координатній формі,
xi
( k , j 1)
xi
(k , j)
i j,
,
xi ( k , j 1) xi ( k , j ) hk , j g i( k , j ) , i j , де g i( k , j ) 1 або g i( k , j ) 1 , i 1, n, j 1, n, k 0, 1, 2, ... , при вибирається так, щоб виконувалась умова
цьому крок
f ( x ( k , j 1) ) f ( x ( k , j ) ) .
hk , j
(28.30)
Після того, як стане j n , лічильник зовнішніх ітерацій k збільшується на одиницю, а індекс j набуває значення 1. Якщо в точці x ( k , j ) жоден з напрямів e j або e j не є напрямом спадання цільової функції (це може бути коли, наприклад,
f ( x ( k , j ) ) 0 ), то при x j
j n індекс
j
збільшується на одиницю і відбувається наступна внутрішня ітерація, коли ж j n , тоді лічильник зовнішніх ітерацій k збільшується на одиницю, а індексу j надається значення 1 і процес продовжується. Для того, щоб на k-й зовнішній ітерації при поточному j визначити, який з напрямів e j чи e j є напрямом спадання цільової функції, можна скористатися правилом парної проби, яке полягає в тому, щоб знайти дві пробні точки y (1) x ( k , j ) e j ,
y ( 2 ) x ( k , j ) e j , де 0 – довжина пробного кроку (досить мале число), а потім в якості вектора g ( k , j ) в (28.29) взяти вектор
g ( k , j ) sign( f ( y ( 2 ) ) f ( y (1) )) e j . Величина кроку hk , j в (28.29), що задовольняє умову (28.30), добирається за одним з правил, описаних в пункті 1 цього параграфа. При цьому, якщо hk , j h const , то маємо покоординатний спуск з постійним кроком. Якщо ж hk , j добирається з умови
f ( x ( k , j ) hk , j g ( k , j ) ) min f ( x ( k , j ) hg ( k , j ) ),
(28.31)
h 0
то одержуємо покоординатний аналог методу найшвидшого спуску, який називається методом Гаусса-Зейделя. Сформулюємо умови збіжності методу покоординатного спуску (28.29), (28.30). X 0*,1 X 0,1 X * , де множина X 0,1 {x R n | f ( x) f ( x ( 0,1) )} , а Нехай X * {x* R n | f ( x*) On } – множина
стаціонарних
точок
функції
f (x ) . Будемо
вважати, що крок hk , j в точці x ( k , j ) добирається так, що виконується умова
f ( x ( k , j ) hk , j g ( k , j ) ) (1 k , j ) f ( x ( k , j ) ) k , j wk , j , де
j 1, n, k 0, 1, 2, ... ,
wk , j inf f ( x ( k , j ) hg ( k , j ) ) , h0
(28.32)
k , j (0; 1) – параметр,
який
характеризує точність розв’язку задачі одновимірної мінімізації (28.31). Т е о р е м а 28.3. Нехай функція f (x ) диференційовна і обмежена знизу на множині X 0 ,1 , а її градієнт задовольняє умову Ліпшиця:
|| f ( x) f ( y ) || K || x y ||
для будь-яких x R n , y R n , де K 0 . Якщо множина X 0*,1 – непорожня і послідовність точок {x ( k , j ) } , яка генерується за методом (28.29) з вибором кроку за правилом (28.31), (28.32), така, що
lim || x ( k , j 1) x ( k , j ) || 0 ,
k
(28.33)
то * lim ( x ( k , j ) , X 01 ) 0.
k
Доведення теореми можна знайти, наприклад, в [57]. З а у в а ж е н н я. В [57] також показано, що умова (28.33) виконується, якщо функція f ( x) не є сталою на обмеженій замкненій множині X 0 ,1 , а для послідовності
{x ( k , j ) } виконується умова
[ x ( k , j ) ; x ( k , j 1) ] X 0 ,1 і
f ( x ( k , j ) ) f ( y ) f ( x ( k , j 1) ) y [ x ( k , j ) ; x ( k , j 1 ] при j 1, n, k 0, 1, 2, ... .