Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3172

.pdf
Скачиваний:
6
Добавлен:
15.11.2022
Размер:
3.23 Mб
Скачать

сокращением интервала неопределенности [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

 

т.е. найти α*.

 

 

 

Положить х10+ α*еj, вычислить f (x ) .

 

 

 

1

Шаг 2.

Если j<n, то положить х01, j=j+1 и перейти к шагу

 

1, иначе к шагу 3.

 

 

Шаг 3.

Проверить выполнение критерия останова

 

(например, ||x0-x1||<

или |f(x0)-f(x1)|< ). Если он

выполняется, то положить x*=x1, f*=f(x1) и закончить поиск. Иначе - положить х01, 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. Положить

х10- α 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]