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

569

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
407.27 Кб
Скачать

Если угол между антиградиентами (острый угол), то

направление поиска

из точки Хk выбрано правильно, и

величину шага можно увеличить (рис. 3.6).

 

 

 

 

 

 

Xk hk+1

X

 

 

 

 

Хk+1

-gradФ(Хk)

Хk-1

 

hk

 

 

 

 

hk

 

 

 

Х*

 

 

 

 

-gradФ(Х)

 

 

Рис. 3. 6

 

 

 

 

Если же угол между антиградиентами (тупой угол), то направление поиска из точки Хk удаляет нас от точки минимума Х*, и шаг нужно уменьшить (рис.3. 7).

Xk h

 

Хk+1

 

 

k+1

 

 

 

 

 

 

Х

-gradФ(Хk)

Хk-1

hk

 

 

 

hk

Х*

-gradФ(Х)

Рис. 3. 7

51

Метод носит название двухуровневого, так как на каждой итерации поиска анализируются не одна, а две точки (Xk и

Х) и строятся два вектора антиградиента. Это, конечно,

увеличивает затраты на проведение одной итерации, но позволяет проводить адаптацию (настройку) величины шага hk+1 на поведение случайных факторов.

З. 4. Методы поиска второго порядка Несмотря на простоту реализации метод

наискорейшего спуска не рекомендуется в качестве

“серьезной” оптимизационной процедуры для решения задачи безусловной оптимизации функции многих переменных, так как для практического применения он работает слишком медленно. Причиной этого является тот факт, что свойство наискорейшего спуска является локальным свойством, поэтому необходимо частое изменение направления поиска, что может привести к неэффективной вычислительной процедуре.

Более точный и эффективный метод решения задачи параметрической оптимизации (2.1) можно получить,

используя вторые производные целевой функции (методы второго порядка). Они базируются на аппроксимации (то есть приближенной замене) функции Ф(Х) функцией (Х),

52

(Х)=Ф(Х0)+ (Х-Х0) т gradФ(Х0)+1 G(X0) (Х-Х0),

(3.9)

 

2

 

 

где G(X0)- матрица Гессе ( гессиан, матрица вторых

производных), вычисленная в точке Х0:

 

2Ф(Х )

2Ф(Х ) . . .

2Ф(Х )

 

x12

x1 x2

x1 xn

 

 

 

 

 

G(X) = 2Ф(Х )

2Ф(Х ) . . .

2Ф(Х )

 

x2 x1

x2 2

x2 xn

 

 

 

 

 

2Ф(Х )

2Ф(Х ) . . .

2Ф(Х )

 

xn x1

xn x2

xn2

.

Формула (3.6) представляет собой первые три члена разложения функции Ф(Х) в ряд Тейлора в окрестности точки Х0, поэтому при аппроксимации функции Ф(Х)

функцией (Х) возникает ошибка не более чем Х-Х0 3.

С учетом (3.9) в методе Ньютона исходными данными

являются требуемая точность , начальная

точка поиска Х0

и получение новых точек производится по формуле:

Хk+1= Хk – G-1k) grad Ф(Хk), k=0,1,2,…,

(3.10)

где G-1k) – матрица, обратная к

матрице Гессе,

вычисленная в точке поиска Хk ( G(Хk) G-1k) = I,

1 0 … 0

I = 0 1 … 0 - единичная матрица).

0 0 … 1

53

Рассмотрим пример поиска минимума для той же функции,

что и в градиентном методе с постоянным шагом и в методе покоординатного спуска: n = 2, X = ( x1, x2), =0.1,

Ф(x1, x2) = (x1 – 1)2 + ( x2 – 2)2 m(in, Х0=( 0, 1 ).

1. Получим точку Х1 по формуле (3. 10):

 

 

Х1= Х0 – G-10) grad Ф(Х0),

 

 

где Х0=

0

, G(Х0) = 2

0

, G-10) = ½

0

,

 

1

 

0

2

 

0

½

 

gradФ(Х0)= (2 (x10-1), 2 (x20-2))=(-2, -2), то есть

 

Х1 =

0

- ½

0

 

-2

, или

 

 

 

1

0

½

 

-2

 

 

 

x11= 0-(1/2 (-2)+0 (-2))=1, x21= 1-(0 (-2)+1/2 (-2))=2,

Х1=(1, 2). Проверим выполнение условий прекращения

поиска : первое

 

условие не выполнено

 

Ф(X1)-Ф(X 0) = 0-2 =2 > =0.1,

но справедливо

 

 

 

 

Ф(Х 1)

 

=2 (х1-1) x1=1

,

 

 

 

x1

 

 

 

 

 

 

 

 

Ф(Х 1)

 

=2 (х2-2) x2=2

,

 

x2

 

 

 

 

 

 

 

то есть все частные производные с точностью можно считать равными нулю, точка минимума найдена:

Х*=Х1=(1,2). Траектория поиска совпадает с траекторией метода наискорейшего спуска ( рис. 3.5) .

54

Главным недостатком метода Ньютона являются затраты на вычисление обратного гессиана G-1k) на

каждой итерации метода.

В методе Давидона – Флетчера - Пауэлла (ДФП)

преодолены недостатки как метода наискорейшего спуска,

так и метода Ньютона / 6 /. Достоинством данного метода является то, что он не требует вычисления обратного гессиана, а в качестве направления поиска в методе ДФП выбирается направление -НkgradФ(Хk), где Нk -

положительно определенная симметричная матрица,

которая заново рассчитывается на каждой итерации (шаге

метода поиска)

и приближает обратный гессиан G-1k)

(Н G-1k)

с увеличением k). Кроме того, метод ДФП

k

 

при его применении для поиска экстремума функции n

переменных сходится (то есть дает решение) не более чем за n итераций.

Вычислительная процедура метода ДФП включает следующие шаги. Исходными данными являются требуемая точность , начальная точка поиска Х0 и начальная матрица Н0 (обычно единичная матрица, Н0 = I ).

1.На k-ой итерации метода известны точка поиска Хk

иматрица Нk (k=0,1,…).

2.Обозначим направление поиска dk = -Нk gradФ(Хk).

Находим

оптимальную величину шага k в

55

направлении dk с помощью методов одномерной оптимизации (так же, как в методе наискорейшего спуска выбиралась величина в направлении ветора антиградиента)

 

 

 

З. Обозначим vk= k

dk

и

получим новую точку

поиска Хk+1=Xk + vk.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Проверяем выполнение условия прекращения

поиска . Если vk или gradФ (Хk+1)

, то решение

найдено Х*= Хk+1.

В

противном

случае

продолжаем

вычисления.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. Обозначим uk = gradФ(Хk+1)- gradФ(Хk) и матрицу

Нk+1

рассчитаем по формуле:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Hk+1= Hk + Ak + Bk,

 

 

 

 

 

(3.11)

где A

k

= v

. v

T / (v T

u )

B

k

= - H

u

. u T. H

k

/ (u

T H

k

u )

 

 

 

k

k

k

k ,

 

 

k

 

k

k

k

 

k .

A

и

В

k

это вспомогательные матрицы размера nхn (v T

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

соответствует вектору-строке, vk

означает вектор-столбец,

результатом

умножения

n-мерной

строки

на

n-мерный

столбец является скалярная величина (число), а умножение столбца на строку дает матрицу размера nxn).

6. Увеличиваем номер итерации на единицу и переходим к пункту 2 данного алгоритма.

Метод ДФП – это мощная оптимизационная процедура, эффективная при оптимизации большинства функций. Для одномерной оптимизации величины шага в методе ДВП используют методы интерполяции / 6 /.

56

3.5. Методы оптимизации функции одной

переменной

3.5.1. Метод квадратичной интерполяции

Метод квадратичной интерполяции (метод Пауэлла)

заключается в приближенной замене целевой функции одной переменной f() квадратичной функцией2 С. Для вычисления коэффициентов А, В, С

квадратичной функции необходимо знать значения аппроксимируемой функции f() в трех точках 1, 2, 3:

 

f

 

 

 

2

С=f

, f

=f(

)

 

 

 

 

 

1

1

1

1

1

 

 

 

f

 

 

 

2

С=f

, f

=f(

)

(3.12)

2

2

 

 

2

2

2

2

2

 

 

 

f

 

 

 

2

С=f

, f

=f(

).

 

3

3

 

 

3

3

3

3

3

 

 

В точке минимума * квадратичной функции/ *=0 и // *>0, поэтому *= -В/ (2А) при А>0. Решив систему уравнений (3.12) и подставив выражения величин

А, В, и С

в формулу для *, получим

 

 

 

 

 

 

1

 

 

(

2-

2)f

1

+ (

2- 2)f + (

2-

2)f

3

 

 

 

 

2

3

 

3

1

2

1

2

 

 

*=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(3.13)

2

 

(2- 3)f1 + (3- 1)f2

(1- 2)f3 .

 

 

 

 

 

 

Рассмотрим основные шаги метода Пауэлла.

1. Исходными данными являются требуемая точность и

величина h.

2. Точку 1 задаем произвольно и, по возможности,

ближе к точке минимума * , 2= 1+h , а чтобы выбрать

57

третью точку 3 сравним f(1) и f(2) (рис.3.8). Если f(1)< f(2), то 3=1-h, в противном случае 3=1+2 h, вычисляем f(3),

3.По формуле (3.13) находим *1.

4.Проверим, можно ли точку * считать точкой

минимума с точностью , то есть f(*k+1)-f(*k) , k=0,1, ... На первой итерации считаем, что *0 = 1. Если условие прекращения поиска выполнено, то задача решена и *= *k+1. В противном случае продолжаем вычисления.

5. Из имеющихся четырех точек 1, 2, 3, *

выбираем три наиболее близких к точке минимума целевой функции f() точки , , . Чтобы получить точки , , из точек 1, 2, 3, *, достаточно исключить точку с наибольшим значением функции f(1), f(2), f(3), f(*), а

затем проверить для трех оставшихся точек выполнение условия < < , f( )>f( ), f( )<f( ).

6. В полученных точках 1= , 2= , 3= вычисляем f(1), f(2), f(3) и переходим к пункту 3.

1-h

1

1+h

1

1+h 1+2 h

1

* 2

3

Рис. 3.8

58

3.5.2. Метод кубической интерполяции Метод кубической интерполяции (метод Давидона)

обеспечивает большую точность при выборе оптимальной величины шага в методах наискорейшего спуска и ДФП по сравнению с методом квадратичной интерполяции. Целевая функция одной переменной f() аппроксимируется функцией С 2D3. Для вычисления коэффициентов А, В, С, D кубического полинома необходимо знать значения аппроксимируемой функции f() и ее производной в двух точках p и q (fp=f(p), fq=f(q), Gp=f / (p), Gq=f /(q)) и решить систему уравнений:

p fp

 

/p Gp

(3.14)

q fq

 

/q Gq .

 

Точку минимума кубического полинома находим из условий / * 2 С * 3 D ( * ) 2 = 0,

// *2 С + 2 3 D (*) > 0. Наилучшие численные результаты получаются при использовании формулы

q ( z + w - Gp )

* =

 

 

 

,

(3.15)

 

 

 

 

 

Gq – Gp +2 w

 

 

 

 

 

где w=z2 - Gq Gp

, z=3 fp – fq q+Gq +Gp.

 

 

 

 

59

 

Рассмотрим основные шаги метода кубической интерполяции.

1. Исходными данными является требуемая точность метода .

2.Точки p и q задаем так, чтобы интервал

(p,q)содержал точку минимума функции f( ). Выбираем p=0

и проверяем, справа или слева от точки p находится точка минимума * (если f / (p)<0, то функция убывает и минимум находится справа от p, в противном случае – возрастает, и

минимум – слева от p). Точку q выбираем в направлении убывания функции. Теперь нужно подобрать расстояние от q до p (p=0) так, чтобы p,q . Для этого задают произвольно величину q и проверяют, выполнено ли хотя бы одно из условий f (p)< f (q) или f / (q)>0. Если ни одно из условий не выполнено, удваиваем расстояние от p до q до тех пор пока p,q .

3.По формуле (3.15) находим *1.

4.Проверим, можно ли точку * считать точкой

минимума с точностью , то есть f / (*k+1) ,

k=0,1, ... Если условие прекращения поиска выполнено, то задача решена и *= *k+1. В противном случае продолжаем вычисления.

5. Если f / (*k+1)>0 , то выбираем вместо интервала

60

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