3172
.pdfсокращением интервала неопределенности [ak, bk] и выбором новой совокупности “удачных точек” для (k + 1) – го шага из уже проведенных испытаний.
Таким образом, при поиске минимума унимодальной функции с высокой степенью точности ε необходимо последовательно применять сначала методы сокращения интервала неопределенности до тех пор, пока не будет получена совокупность “удачных точек”, и затем методы полиномиальной интерполяции.
2.3. Методы безусловной минимизации в пространстве Rn
Для численного решения задач безусловной минимизации
вида
f (x) min
x Rn
разработано много алгоритмов, использующих итерационные процедуры
x k 1 x k k y k ,
где yk - направление поиска точки xk+1 из точки xk, а число k -
величина шага в выбранном направлении. Работа таких алгоритмов на каждой итерации происходит по следующей схеме:
Шаг 1. Проверить условия останова и, если они выполнены,
вычисления прекратить и взять точку xk в качестве искомого решения.
Шаг 2. Зафиксировать ненулевой вектор yk в качестве направления поиска.
Шаг 3. |
Выбрать число |
k |
- величину шага. |
||
Шаг 4. |
Положить x k |
1 |
x k |
k y k . |
|
Для проверки условий останова на шаге |
1 на практике часто |
||||
используются следующие критерии: |
|
|
|||
|
||xk+1 - xk||< |
,|f(xk+1) - f(xk)|< , |
|| f (x k ) ||< , |
33
где - заданный параметр точности. Кроме того, при практической реализации эти алгоритмы полезно дополнять "дежурным"
критерием останова k Nmax , где Nmax - задаваемое заранее максимальное число итераций.
В качестве вектора yk на шаге 2 могут выбираться единичные орты (покоординатный спуск), антиградиент в точке xk
(градиентные |
методы) |
|
и |
|
другие |
||
направления. Величина шага |
k , |
как правило, выбирается так, |
|||||
чтобы |
выполнялось условие |
f (x k 1 ) |
f (x k ) . |
В частности, |
|||
чтобы |
гарантировать |
выполнение |
этого |
неравенства, |
можно |
выбирать
k |
arg min f (xk |
yk ) |
|
|
(будем в дальнейшем это называть правилом наискорейшего спуска).
Рассмотрим примеры алгоритмов, построенных в соответствии с предложенной схемой.
2.3.1. Метод покоординатного спуска
Этот метод заключается в последовательной минимизации целевой функции f(x) сначала по направлению первого базисного вектора е1 ,затем второго е2 и т.д. Таким образом, здесь
y k ek , |
k |
выбирается |
в соответствии с правилом |
|
наискорейшего спуска. После окончания минимизации по направлению последнего базисного вектора еn цикл может повторяться. Метод покоординатного спуска может быть методом нулевого порядка, т.к. он может не использовать в работе производных функции f(x). Таким образом, он может применяться для оптимизации недифференцируемых функций.
Алгоритм.
Шаг 0. Выбрать начальное приближение х0 в пространстве Rn , задать параметр точности . Найти
34
f(x0), положить j=1.
Шаг 1. Решить задачу одномерной минимизации
|
Ф( ) f (x0 |
e j ) |
min, |
|
|
|
R |
|
т.е. найти α*. |
|
|
|
Положить х1=х0+ α*еj, вычислить f (x ) . |
||
|
|
|
1 |
Шаг 2. |
Если j<n, то положить х0=х1, j=j+1 и перейти к шагу |
||
|
1, иначе к шагу 3. |
|
|
Шаг 3. |
Проверить выполнение критерия останова |
||
|
(например, ||x0-x1||< |
или |f(x0)-f(x1)|< ). Если он |
выполняется, то положить x*=x1, f*=f(x1) и закончить поиск. Иначе - положить х0=х1, f(x0)=f(x1), j=1 и перейти к шагу 1.
З а м е ч а н и е . Для приближенного решения вспомогательной задачи одномерной минимизации на шаге 1 алгоритма на практике, как правило, используются методы нулевого порядка (метод
перебора, деления отрезка пополам, золотого сечения). |
|
|||
Эффективность |
метода |
покоординатного |
спуска |
|
существенно зависит от свойств |
целевой функции. Если функция |
|||
сепарабельная, т.е. представима в виде |
|
|
||
|
|
n |
|
|
f (x1 ,.., xn ) |
fi (xi ) |
|
||
|
i |
1 |
, |
|
то через n шагов алгоритма |
находится оптимальное |
|||
решение. |
|
|
|
|
Пример1. Решить задачу методом покоординатного спуска.
f (x) 2x12 x22 min .
35
Рисунок 2.3.1.
Решение. Данная функция является сепарабельной (рис.2.3.1.). Выберем произвольную начальную точку, например, x0 = (3,3). В результате минимизации по направлению e1 , очевидно, получается точка x1=(0,3), а минимизация по направлению e2 приводит к оптимальному решению x* = (0,0) (рис.2.3.1).
Ответ: x1* 0; x2* 0; fmin 0.
Пример 2. Решить задачу
f (x) 2x12 x22 x1 x2 min
методом покоординатного спуска.
0.Зададим x0=(0.5,1), f(x0)=2. В качестве критерия
останова выберем критерий | f(x0) - f(x1) | < и зададим
=0.1.
1.В качестве первого направления выбираем e1. Решим задачу
Ф( ) 2(0.5 )2 (0.5 ) min
α* = -0.75. х1 = (-0.25,1), f(x1) = 0.375.
2. Полагаем х0 = х1 .
36
Рисунок 2.3.2.
3. В качестве следующего направления выбираем е2. Записываем задачу одномерной минимизации:
( ) (1 )2 0.25(1 ) min .
α* = -0.875, х1 = (-0.25,0.125), f(x1) = 0.11.
4. Проверяем критерий останова:
|0.375-0.11| = 0.265>
5.В качестве направления снова выбираем e1. Решим задачу одномерной минимизации по α:
( |
) 2 ( 0.25 |
)2 0.125 ( 0.25 |
) |
min . |
α* |
0.22. х1 = (-0.03,0.125), f(x1) 0.021. |
|
|
|
6.Полагаем х0 = х1 . |
|
|
|
7.В качестве направления выбираем е2. Записываем задачу одномерной минимизации:
37
( ) (0.125 ) 2 0.03(0.125 ) min .
α* = -0.11. х1 = (-0.03,0.015), f(x1) 0.001.
8. Проверяем критерий останова : |0.021-0.001| = 0.02< . Решение получено.
Ответ: x1* 0.03; x2* 0.015; fmin 0.001.
Замечание. Из графической иллюстрации видно, что оптимальным решением является центр концентрических эллипсов -
точка (0,0) .
2.3.2. Методы градиентного поиска
Представленные далее методы используют условие дифференцируемости функции f(x) в Rn. В качестве критерия останова таких методов, как правило, выбирается условие
|| f (x k ) ||< .
Вкачестве направления движения для отыскания минимума
вметодах градиентного спуска на каждом шаге выбирается вектор - антиградиент
y k |
f (x k ) . |
|
Как известно, в малой окрестности точки xk антиградиент |
||
обеспечивает наискорейшее убывание |
функции. Приведем два |
|
варианта методов градиентного спуска |
(отличающиеся способом |
|
отыскания величины α). |
|
|
2.3.2.1. Метод дробления шага
Алгоритм метода дробления шага предполагает следующую последовательность действий.
Шаг 0. |
Задать параметр точности , начальный шаг |
0, |
|
выбрать x0 Rn , вычислить f(x0). |
|
Шаг 1. |
Найти f (x0 ) и проверить критерий останова: |
|
|| f (x 0 ) ||< .
Если он выполнен, то вычисления завершить, полагая
38
x* = x0, f* = f(x0) .
Шаг 2. Положить
х1=х0- α f (x0 ) ,
вычислить f(x1). Если f(x1) < f(x0), то положить х0 = х1, f(x0) = f(x1) и перейти к шагу 1.
Шаг 3. Положить |
|
и перейти к шагу 2. |
|
||
2 |
|
|
Пример. Решить задачу |
|
f (x) 2x12 x22 min
методом градиентного спуска.
Решение.
f (x) (4x1 ,2x2 ) .
Итерация 1 |
|
|
0. |
Зададим x0=(0.5,1), f(x0)=1.5. Выберем =0.01, |
1 . |
1. |
f (x 0 ) = (2, 2), || f (x 0 ) ||> . |
|
2.Положим
х1 = х0- f (x0 ) = (0.5-2,1-2)=(-1.5,-1), f(x1) = 5,5, f(x1) > f(x0).
3. Положим |
|
= 1/2 и перейдем к шагу 2. |
2 |
4.Положим
|
1 |
0 |
|
1 |
|
0 |
|
1 |
|
х |
|
= х |
- |
|
f (x |
|
) = (0.5-1,1-1) = (-0.5,0), f(x |
) = 0.5. |
|
|
2 |
|
|||||||
|
|
|
|
|
|
|
|
|
|
Так как f(x1)<f(x0), |
то полагаем |
|
|||||||
х0 = х1 = (-0.5,0), f(x0) = f(x1) = 0.5 и переходим к шагу 1. |
|||||||||
Итерация 2 |
|
|
|
|
|
|
|
||
5. |
f (x 0 ) =(-2,0), || |
f (x 0 ) ||> |
|
6.Положим
|
1 |
0 |
|
1 |
|
0 |
1 |
х |
|
= х |
- |
|
f (x |
|
) = (-0.5+1,0) = (0.5,0), f(x ) = 0.5, |
|
2 |
|
|||||
|
|
|
|
|
|
|
f(x1) = f(x0).
39
7. Положим |
|
= 1/4 и перейдем к шагу 2. |
2 |
8.Положим
|
1 |
f (x 0 ) = (-0.5 +0.5, 0) = (0,0), f(x1) = 0, |
||
х1 = х0- 4 |
||||
f(x1) < f(x0). |
|
|
|
|
Полагаем |
|
|
|
|
х0 = х1 = (0,0) , f(x0) = f(x1) = 0 и переходим к шагу 1. |
||||
9. |
f (x0 ) = (0,0), || |
f (x 0 ) || = 0< - останов, найдено |
||
точное решение. |
|
|
||
Ответ: x1* |
0; x*2 |
0; f min |
0. |
|
|
2.3.2.2. Метод наискорейшего спуска |
|||
Пусть |
f(x) имеет минимум в |
точке x* (x1* , x*2 ,..., x*n ) , |
никаких других стационарных точек в окрестности x* не имеет и пусть x 0 (x10 , x 02 ,..., x 0n ) - достаточно близкая к точке x*.
Построим последовательность точек х0, х1, х2,…,хk с
координатами. |
|
|
|
|
|
|
|
|
x ik 1 |
x ik |
k f x |
' (x k ); |
k |
0, k |
|
|
1,2,... (2.3.1) |
|
|
|
i |
|
|
|
|
|
В методе наискорейшего спуска величина |
k |
|
определяется |
|||||
|
|
|
|
|
|
|
|
|
из условия минимума функции одной переменной. |
|
|
|
|||||
Ôk ( ) f {xk |
f ' |
(xk ), xk |
f ' (xk ),..., xk |
f |
' |
(xk )} . (2.3.2) |
||
1 |
x |
2 |
x |
|
n |
|
x |
|
|
i |
|
2 |
|
|
|
n |
|
При выполнении некоторых дополнительных условий
последовательность точек xk, (k=1,2,…) сходится к х*, т.е. |
|
lim xk x*. |
(2.3.3) |
k |
|
На практике процесс итераций по (2.3.1) заканчивается при |
|
k=n, если выполняется условие |
|
max |
f x' (x n ) |
, |
(2.3.4) |
i |
i |
|
|
|
|
|
|
где - заданная точность нахождения минимума. |
|
40
Задача определения начального приближения, т.е. координат точки x0 не формализована.
Алгоритм метода наискорейшего спуска состоит из
следующих шагов. |
|
|
|
Шаг 0. |
Задать параметр точности |
, выбрать х0 Rn . |
|
Шаг 1. |
Найти |
f (x 0 ) и проверить критерий останова: |
|
|
|| |
f (x 0 ) ||< . |
(2.3.5) |
|
Если он выполнен, то вычисления завершить, полагая |
||
|
x* = x0, f* = f(x0) . |
|
|
Шаг 2. |
Решить задачу одномерной оптимизации |
||
|
Ф(α) = f(х0- α f (x 0 ) ) |
min , |
0
т.е. найти α*. Положить х0 = х0- α* f (x 0 ) ,
и перейти к шагу 1.
Пример 1. Определить с точностью 0,1 минимальное
значение функции:
f(x) = x12+2x1x2+2x22-6x1-8x2+12
В качестве начального приближения взять точку х0(1;1).
Решение. Вычислим градиент функции f(x) в точке х0. Так
как
f (x) |
{f ' |
, f ' |
} |
{2x |
1 |
2x |
2 |
- 6; 2x |
1 |
4x |
2 |
- 8}, |
|
x1 |
x |
2 |
|
|
|
|
|
||||
имеем |
|
|
|
|
|
|
|
|
|
|
|
|
f (x 0 ) |
{-2;-2}. |
|
|
|
|
|
|
|
|
|
Следующее приближение х1( x11, x12 ), как следует из (2.3.1), лежит на луче:
x1 1 2
x 2 1 2 , 0.
Значение шага |
0 |
получим из условия минимума функции, |
|
|
определяемой по формуле (2.3.2):
41
|
|
|
|
Ф0 ( |
) |
f(1 |
2 |
,1 |
2 |
) |
20 |
2 |
8 |
3, |
0. |
|||
Решая одномерную задачу минимизации, получим |
0 = 0,2. |
|||||||||||||||||
Поэтому |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x11 |
1 |
2 |
1,4; |
x 12 |
1 2 |
1,4. |
|
|
|||||
Найдем второе приближение, для чего вычислим |
||||||||||||||||||
координаты |
|
f (x) в точке х1(1,4;1,4): |
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
f x' (1,4;1,4) |
- 0,4, |
f x' |
(1,4;1,4) |
- 0,4. |
|
|
||||||||
|
|
|
|
|
1 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
Точка х2( x12 , x 22 ) |
лежит на луче |
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
x1 |
1,4 |
0,4 |
; |
x 2 |
|
1,4 |
0,4 |
, |
0. |
|
|||
Минимизируя функцию |
|
|
|
|
|
|
|
|
|
|
||||||||
Ф ( |
) |
|
f(1,4 |
0,4 |
;1,4 |
0,4 |
) |
0,16 |
2 |
0,32 |
|
14,2, |
||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
получаем |
1 |
|
1; x12 |
1,8; x 22 |
1. |
|
|
|
|
|
|
|
|
|||||
Аналогично найдем |
|
|
|
|
|
|
|
|
|
|
|
|||||||
x13 |
1,88; x 32 |
1,08; x14 |
|
1,96; x 24 |
1. |
|
|
|
|
|||||||||
Проверим условие (2.3.5) или (2.3.4), для чего вычислим |
||||||||||||||||||
значение производных функции f(x) в точке x 4 (x14 , x 24 ) |
|
|
||||||||||||||||
|
|
|
|
f ' 4 (1,96;1) |
- 0,08; f ' |
4 |
(1,96;1) |
|
- 0,08. |
|
|
|||||||
|
|
|
|
|
x |
|
|
|
|
|
x |
2 |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,1, |
|
|
|
|||||||||||||
Так как |
0,08 |
|
то процесс итераций заканчиваем. |
|
|
|||||||||||||
Ответ: |
|
x1* |
1,96; x*2 |
1; fmin |
|
2,0016. |
|
|
|
|
||||||||
Замечание: Классическим методами математического |
||||||||||||||||||
анализа можно найти точное решение: |
x1 |
2, x 2 |
1, fmin |
|
2. |
|||||||||||||
Пример 2. Решить задачу |
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
f (x) |
x12 |
x 22 |
4x1 |
|
2x 2 |
min |
|
|
||||||
методом наискорейшего спуска. |
|
|
|
|
|
|
|
|
|
|||||||||
Решение: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
f (x) (2x1 |
4,2x2 |
2) |
|
|
|
42