Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2793.Методы оптимизации..pdf
Скачиваний:
175
Добавлен:
15.11.2022
Размер:
33.68 Mб
Скачать

5. АЛГОРИТМЫ МЕТОДОВ ПЕРВОГО И ВТОРОГО ПОРЯДКОВ

Если ограниченная снизу целевая функция /( ж ) , ж Е Е п , является дифференцируемой на множестве Еп, то алгоритм поиска точки ж* ее минимума можно построить, используя ин­ формацию, по крайней мере, о градиенте этой функции. Более широкие возможности построения таких алгоритмов возника­ ют в случае, когда целевая функция дважды дифференцируема, что позволяет использовать ее матрицу Гессе. В этой главе применительно к минимизации дифференцируемых и дважды дифференцируемых функций рассмотрены алгоритмы м ет о­ дов первого и вт орого порядков соответственно. Общей чертой этих алгоритмов является построение релаксационной посл едо­ ват ельност и { х к} точек х к 6 Мп, получаемых при выполнении каждой к-й итерации, а различие состоит в используемой ин­ формации о целевой функции и ее производных.

5.1. Алгоритмы метода градиентного спуска

Направление спуска в м ет оде градиент ного спуска совпа­

дает с направлением антиградиента минимизируемой целевой функции /(ж), дифференцируемой в Кп, а элементы релакса­ ционной последоват ельност и { х к} строят при помощи рекур­ рентного соотношения вида (4.43)

х к= х к~ 1 + щ иик = х к~ 1 X fcg ra d /^ -1), Xk > 0 , к Е N,

где w k = gm df(xk~~1) — антиградиент целевой функции в точке х к~1. При этом говорят, что из точки х кна к-й итерации алгоритма происходит спуск с шагом спуска Xk\wk\. На пер­ вой итерации (k = 1) спуск начинают из выбранной начальной

точки ж0 Различие алгоритмов метода градиентного спуска состоит в способе выбора значения х^.

Сначала рассмотрим способ выбора этого значения, харак­ терный для метода дробления шага и обеспечивающий выпол­ нение на каждой А;-й итерации неравенства

f { x k~l) - f { x k)>tjjxk\wk\2,

(5.1)

где и Е (0,1), гарантирующего сходимость последовательности {\wk\} к нулю (см. 4.3). Если на к-й итерации не выполнено это неравенство при некотором начальном значении х^ хо, то процедуру дробления шага проводят в соответствии с фор­ мулой = z/xo, где v Е (0,1) — заданный постоянный коэф­ фициент дробления шага, а г — номер этапа дробления, на котором неравенство (5.1) будет выполнено.

В целом алгоритм с использованием дробления шага можно представить следующим образом. Выбираем начальную точку ж0 и параметр точности поиска е$ > 0 в условии |ги*| < ез

прекращения итераций, а также значения z/и XQ. В неравенстве (5.1) обычно принимают ш = 1/2. Вычисляем значение /(ж 0) целевой функции /(ж) в точке ж0, полагаем k = 1 и переходим к основной части алгоритма.

1. В точке x k~l Е М71, найденной на (к—1)-й итерации (на первой итерации в точке ж0), вычисляем антиградиент wk = = —grad f ( x k~l). При выполнении неравенства |ги*| < £з пре­ кращаем дальнейшие итерации и полагаем ж* « ж*” 1, f{x*) « « f ( x k~l). В противном случае переходим к п. 2.

2. Определяем точку х к = х к~ 1 + xjcwk и значение / ( х к) целевой функции в этой точке. Если неравенство (5.1) (ш = 1/2) выполнено, то полагаем* X ^ = XQ, Л::= А; + 1 и возвращаемся к п. 1 . В противном случае переходим к п. 3.

3. Полагаем х* := ищ и возвращаемся к п. 2.

* Здесь и далее при описании алгоритмов используем символ присва­ ивания :=, который указывает, что значение величины в правой части формулы нужно присвоить величине, записанной слева от него. Например, запись к:= к+ 1 означает увеличение номера итерации на единицу.

Пример 5.1 . При помощи описанного алгоритма найдем решение задачи безусловной минимизации функции f(xi,x%) =

= 6x^ —4 xiX2 + 3x2 + 4y/5(xi + 2 x2 ) + 2 2 (см. пример 3.18). Выбе­ рем начальную точку ®° = (—2, 1), при этом f{x°) = 57. Кроме того, фиксируем £3 = 0,01, щ = 0,1 и v = 0,5. Воспользу­ емся тем, что функция квадратичная и имеет положительно определенную матрицу с собственными значениями Ai = 4 и

чение хо = 0,1 € (0, 2/Аг) обеспечи­

 

 

х2j

 

 

JL

вает (сильную) сходимость метода

 

 

 

 

 

градиентного спуска с постоянным

 

/

Л О

на всех итерациях значением

=

 

 

1 Xl

 

 

 

= щ (см. 4.4). При этом в соответ­

/

/

/ ^ \ 2

ствии с (4.53) справедлива оценка

j

 

/

 

 

 

 

 

1

\xk-x*\ ^

|®°-®*|,

keN,

1

 

 

и последовательность { x k}

сходит-

\

 

 

ся к искомой точке х* Е М2 со скоро­

 

 

 

стью геометрической прогрессии,

 

 

Рис. 5.1

имеющей знаменатель q = 5/ 12.

 

 

 

 

На рис. 5.1 представлена траектория

поиска точки х* =

= (—ч/5, —2\/5)

минимума этой функции, а в табл. 5.1 при­

ведены результаты вычислений (отметим, что у/Ъ~ 2,2361 с точностью 5 •10-5 ).

Характерной особенностью процесса поиска в данном слу­ чае является то, что на первых итерациях спуск в направлении антиградиента приводит к существенному убыванию значения минимизируемой функции по сравнению с ее значением в на­ чальной точке х°. Затем темп убывания значений функции замедляется. Эта особенность, уже отмеченная ранее (см. 4.3), снижает эффективность используемого алгоритма на заверша­ ющей стадии поиска (для выполнения условия |iofc|< £3 потре­ бовалось 15 итераций). #

 

 

 

 

Таблица 5.1

к

х к

f ( x k)

|grad/(a:fc)|

0

( - 2,000, 1 ,000)

57,000

37,148

1

(-1,047, -0,594)

7,150

18,553

2

(—0,923,

-2,446)

-15,976

10,309

3

(—1,688,

—3,136)

-23,772

5,953

4

(—1,811,

-3,719)

-26,494

3,508

5

(—2,020, —4,001)

-27,460

2,087

6

(—2,091,

—4,197)

-27,806

1,248

7

(—2,155,

-4,304)

-27,930

0,747

8

(—2,185,

—4,372)

-27,975

0,448

9

(—2,206,

—4,412)

-27,991

0,269

10

(-2,218,

—4,436)

-27,997

0,161

11

(—2,225,

-4,450)

-27,999

0,097

12

(-2,230, -4,459)

-28,000

0,058

13

(—2,232,

-4,464)

-28,000

0,035

14

(—2,234,

—4,467)

-28,000

0,021

15

(—2,235,

—4,469)

-28,000

0,013

16

(—2,235,

-4,470)

-28,000

0,008

Рассмотрим еще один пример реализации описанного ал­ горитма, иллюстрирующий влияние выбранного значения и е G (0,1) коэффициента дробления шага на количество итераций, обеспечивающих достижение заданной точности поиска точки х* минимума целевой функции f(x).

Пример 5.2. Рассмотрим задачу минимизации функции f(x\,X2 ) = (х2 —Х2 )2 + (TI — I)2, выбрав начальную точку х° = = (—1, —2), в которой f(x°) = 13, и параметры £3 = 10_3, хо = 1.

Результаты поиска точки минимума х* = (1 , 1 ) рассматри­ ваемой функции при различных значениях коэффициента дро­ бления шага и Е (0, 1 ) (приближенное значение точки миниму­ ма, значение функции в этой точке и количество итераций N ) приведены в табл. 5.2. Траектории поиска точки минимума в

Таблица 5.2

V

Ж*

 

f { x N)

N

Рисунок

0,2

(0,999,

0,997)

0,132-Ю "5

102

5.2, а

0,4

(0,999, 0,998)

0,119-Ю "5

76

5.2,6

0,5

(0,999,

0,998)

0,100- 1 0 -5

72

5.3, а

0,6

(0,999,

0,997)

0,157

10~5

54

5.3,6

0,8

(0,999,

0,997)

0,159 Ю " 5

66

5.3, в

0,5

(0,999,

0,998)

0,066 •10"5

85

5.3, г

каждом варианте показаны на рис. 5.2 и 5.3 (в табл. 5.2 даны ссылки на соответствующий каждой траектории рисунок).

Из результатов поиска видно, что значение и существен­ но влияет на необходимое количество итераций, обеспечива­ ющих поиск точки ж* минимума рассматриваемой функции с заданной точностью. Наименьшее количество итераций соот­ ветствует выбору значения и на отрезке [0,5, 0,8].

б

Рис. 5.2

Отметим, что на практике значение х^ на к-й итерации вы­ бирают так, чтобы выполнялось неравенство f ( x k~l) —f ( x k) > > 0. Это равносильно выполнению неравенства (5.1) при и = 0. На рис. 5.3, г показан именно этот вариант алгоритма гради­ ентного спуска при хо = 1 и v = 0,5. #

Эффективность алгоритма, использующего спуск в напра­ влении антиградиента, можно несколько повысить, если значе­ ние Х£ на каждой к-й итерации выбирать путем минимизации функции

Фк{х) = / ( * fc_1 + KWk), х > 0,

(5.2)

т.е. применить метод наискорейшего спуска.

Напомним, что

для строго выпуклой функции /(ж) это равносильно проце­ дуре исчерпывающего спуска, но в общем случае значение х, соответствующее наименьшему значению функции ^ ( х ) , не совпадает со значением, получаемым при помощи исчерпываю­ щего спуска (см. замечание 4.2). Отметим, что поиск минимума функции фк{я ) может оказаться довольно трудоемкой самосто­ ятельной задачей, требующей применения методов одномерной минимизации (см. 2), но для сильно выпуклой квадратичной

целевой функции значение х^ определено однозначно формулой (4.55).

Выбор значения х^ как при помощи исчерпывающего спус­ ка, так и методом наискорейшего спуска гарантирует сходи­ мость последовательности {ги^} к нулю (см. замечание 4.3). Поэтому в качестве условия прекращения итераций и при этом варианте выбора значения х^ целесообразно использовать не­ равенство |ги*| < £3.

Опишем алгоритм наискорейшего спуска в случае произ­ вольной дифференцируемой целевой функции /(ж ), х Е К71. Предварительно выберем начальную точку ж0 и параметр точ­ ности поиска £3, положим k = 1 и перейдем к основной части алгоритма.

1 . В точке ж*-1, найденной на (к—1 )-й итерации (в точке ж0 на первой итерации), находим значение f ( x k~l) целевой функ­

ции и ее антиградиент wk = —grad/(ж *-1). При выполнении неравенства \wk\< £3 дальнейшие итерации прекращаем и пола­ гаем х* ж х к~х, /(ж*) ~ f { x k~l). В противном случае переходим к п. 2.

2. Минимизируя функцию фк{К) (5.2), находим значение х^ и точку х к — x k~l + х^ги*, полагаем к := к + 1 и возвращаемся к п. 1 .

Пример 5.3. Применим рассмотренный алгоритм к поиску минимума той же квадратичной функции, что и в примере 5.1, приняв х° = (—2, 1) и £3 = 0,01. Так как эта функция явля­ ется сильно, выпуклой (см. при­ мер 3.18), то значения х^ выби­ раем в соответствии с (4.55). В табл. 5.3 приведены результаты вычислений, а на рис. 5.4 иллю­ стрируется процесс поиска точ­ ки х * = (—л/5, —2\/5) минимума этой функции и выполнение усло­ вия (4.45) ортогональности напра­ влений спуска на двух следующих

друг за другом итерациях.

При том же значении £3 = 0,01

Рис. 5.4

параметра точности для заверше­ ния вычислений в данном примере потребовалось на две итера­ ции меньше, чем в примере 5.1. #

Примеры 5.1 и 5.3 показывают, что алгоритм метода на­ искорейшего спуска в случае квадратичной функции не дает заметного выигрыша по количеству итераций по сравнению с алгоритмом, использующим метод дробления шага. Минимиза­ ция же неквадратичной функции при сопоставимом количестве итераций, необходимых для достижения заданной точности при помощи этих алгоритмов, может потребовать существенно большего общего объема вычислений по методу наискорейшего

 

 

 

 

 

Таблица 5.3

к

х к

/(* * )

Щ:

|grad/(»fc)|

0

( - 2,000, 1 ,000)

57,000

37,148

1

(-0,283, -1,872)

-5,154

0,090

15,182

2

(—2,173,

—3,001)

-21,860

0,145

9,985

3

(-1,711, -3,773)

-26,350

0,090

4,081

4

(-2,219, -4,077)

-27,556

0,145

2,684

5

(-2,095, -4,284)

-27,881

0,090

1,097

6

(-2,231, -4,366)

-27,968

0,145

0,721

7

(—2,198,

-4,422)

-27,991

0,090

0,295

8

(—2,235,

-4,444)

-27,998

0,145

0,194

9

(—2,226,

-4,459)

-27,999

0,090

0,079

10

(—2,236,

-4,464)

-28,000

0,145

0,052

11

(—2,233,

-4,468)

-28,000

0,090

0,021

12

(—2,236,

-4,470)

-28,000

0,145

0,014

13

(—2,235,

-4,471)

-28,000

0,090

0,006

спуска вследствие поиска на каждой итерации минимума функ­ ции ipk{x) (5.2). Поэтому необходимое количество итераций еще не является критерием эффективности того или иного ал­ горитма.

5,2. Метод сопряженных направлений

Среди методов первого порядка поиска минимума целе­ вой функции /(ж ), х Е Еп, особое место занимает метод сопряженных направлений, основанный на свойствах век­ торов, сопряженных относительно некоторой квадратной ма­ трицы (см. 4.5). Этот метод по сравнению с методом наиско­ рейшего спуска требует, как правило, заметно меньшего коли­ чества итераций для достижения той же точности поиска при сопоставимом объеме вычислений на каждой итерации. Раз­ личие в способах построения системы сопряженных векторов,

определяющих сопряженные направления спуска, порождает несколько алгоритмов метода сопряженных направлений.

Сначала рассмотрим алгоритм, предназначенный для поис­ ка точки х * минимума сильно выпуклой на выпуклом множе­ стве Rn квадратичной функции вида (3.37)

/(* ) = ^{Qx,x) + {c,x),

® e R n,

(5.3)

где Q — положительно определенная матрица порядка п, а с е К п — заданный вектор. Напомним, что эта функция имеет единственную точку х* = —Q~1c, в которой она достигает наи­ меньшего значения. Выше (см. 4.5) показано, что, располагая произвольной системой векторов рг 6 Rn, i = 1 , п, сопряженных относительно матрицы Q, обратную к ней матрицу Q- 1 можно вычислить при помощи соотношения (4.65)

Q-1

f р Чр Т

(Qv\ р*)'

 

Но построение системы сопряженных векторов предста­ вляет собой самостоятельную и в общем случае достаточно сложную и трудоемкую в вычислительном отношении зада­ чу* Особенность алгоритмов метода сопряженных направле­ ний состоит в том, что систему сопряженных векторов строят последовательно в процессе выполнения итераций, причем най­ денный на очередной, к-й итерации вектор рк Е Шп определяет на этой итерации направление спуска. Выше (см. 4.5) из­ ложена элементарная процедура построения системы из двух сопряженных векторов в R2, используемых при минимизации квадратичной функции двух переменных. Обобщим эту проце­ дуру применительно к минимизации функции (5.3).

Выберем начальную точку ж0 Е R71, найдем в этой точке ан­ тиградиент w l = —grad/(ж 0) = —Qx° —с и положим р 1 = w l. Ясно, что если \р1\ф 0, то вектор р 1 определяет на первой

*См.: Пшеничный Б .Н ., Данилин Ю .М .

= 1 ) итерации направление спуска (в противном случае точ­ ка х° удовлетворяет необходимому условию минимума, а это в случае функции (5.3) равносильно тому, что х° = х* — един­ ственная точка наименьшего значения этой функции). Считая, что \р1\Ф 0, и проводя исчерпывающий спуск, при помощи (4.55) находим значение

|w 1]2

IP 1!2

Xl (Qw1,™1) ~ (Q p^ p1)

и точку х 1 = х° + х\р 1. Таким образом, первая итерация полно­ стью совпадает с итерацией алгоритма наискорейшего спуска.

На второй итерации = 2) вычислим антиградиент w2 = = —grad/(aj1) = —Qxl —с в найденной точке х 1. Пусть |ги2|ф О,

так как в противном случае х 1= х*. Положим

 

 

p2='y1pl + w 2

(5.4)

и, умножив это равенство скалярно на вектор

Qpl ф 0,

за­

пишем (Q p\p2) = (Qp1, 7 IP* + w2). Потребуем,

чтобы

век­

торы р 1 и р2 были сопряженными относительно матрицы Q,

т.е. чтобы выполнялось равенство (Q p\p2) = 0 .

Тогда 71 =

= - (Qp1, w2) / (Qp1, р 1) . Убедимся, что |р2|ф 0. В самом деле, при |р2|= 0 имеем w2 = —71Р1 и после умножения скалярно на вектор w2 ф 0п приходим к противоречию:

(ги2, w2) = \w2\ = - 7 1 (ги2, р 1) = (ш2, w l) = 0,

поскольку при исчерпывающем спуске в соответствии с (4.45) антиградиенты на двух следующих друг за другом итерациях ортогональны. Вектор р2 задает направление спуска из точкй ж1, так как с учетом (5.4)

(grad/(®1),p 2) = - (го2, jip 1 + w2) =

= —71 (w2, p 1) —(го2, го2) = —|го2|2 < 0.

Если в направлении вектора р2 провести исчерпывающий спуск, то теперь при нахождении точки х 2 = х 1 + х 2р2 для вычисления значения х 2 нельзя использовать (4.55), так как в общем случае 71 Ф0 и поэтому направление спуска из точки х 1 не совпадает с направлением антиградиента в этой точке. Вычислим в точке х 2 антиградиент

w3 = - grad/(ж 2) = -Q x 2 - с

= - Q x1 - x 2Qp2 - c = w2-

K 2Qp2

и после умножения

скалярно

на вектор р2 с учетом

(4.57)

получим (го3, р2) = (го2 x 2Qp2,р2) = 0, откуда

 

_

(го2,Р2)

=

(grad/(a;1),p 2)

(5.5)

X2 ~ ( Q p 2,p 2)

 

(Qp2,p 2)

 

 

Так как

w3 —го2 = —Qx2 с + Qx1 + с = —Q{x2 —х 1) =

= —x 2Qp2, то с учетом го1 = р

1 имеем

(го3, го1) =

(го2 - x 2Qp2, го1)

= (го2, го1) - х 2 (<?р2, р 1) = 0,

поскольку при исчерпывающем спуске на первой итерации (го2, го1) = 0, a (Qp2,р 1) = (Qp1,р 2) = 0 в силу симметричности матрицы Q и Q-ортогональности векторов р 1 и р 2. Следова­ тельно, при исчерпывающем спуске в пространстве К", п > 2, антиградиенты ортогональны на первых трех итерациях.

Продолжая описанную процедуру построения сопряженных векторов, с помощью метода математической индукции можно показать*, что на любой к-й итерации при к = 1 , п—1

' У +1=7*р'с+ гл*+1,

( Q p * ^ 1)

7* =

(Qpk,pk)

(5.6)

wk+1 = wk —XfcQpfc,

(Qpfc+1,pi) = 0 ,

( (гп/г+1, гог) = 0, г = 1 , к,

*См.: Васильев Ф .П ., а также: Базара М .} Шеттпи К.

и при этом Xk = (wk, pfc) / (Qp*, p*) и ж* = x k~l + XkPk. Та­ ким образом, эта процедура за п итераций позволяет построить систему векторов рг Е R71, г = 1, п, сопряженных относительно матрицы Q и в силу леммы 4.5 линейно независимых. Анти­ градиенты ги* = —grad/(®fc_1), /с Е N, в соответствии с (5.6) образуют ортогональную систему векторов. Так как в Еп не может быть более п ненулевых ортогональных векторов, то один из антиградиентов wk, к = 1 ,п + 1 , с номером г должен быть нулевым вектором, т.е. w%= —grad/(®1-1) = 0П. Поэто­ му точка х* = ж1”1 минимума функции f(x) будет найдена не более чем за п итераций.

Пример 5.4. Описанную процедуру построения сопряжен­ ных векторов используем для поиска точки х* минимума функ­ ции f(x 1,^2) = 6ж2 Ах2 + 3^2 + 4\/5(a;i + 2x2) + 22 двух пе­ ременных, рассмотренной в при­ мерах 5.1 и 5.3, приняв в каче­ стве начальной точку ж0= (—2, 1).

На рис. 5.5 представлены две ите­ рации поиска, причем первая из них полностью совпадает с первой итерацией в примере 5.3, прове­ денной по методу наискорейшего спуска. На второй итерации ис­ черпывающий спуск из точки х 1 = = (—0,283, —1,872) в направлении вектора р2, сопряженного с векто­

ром р 1, приводит в искомую точку

Рис. 5.5

®* = (—л/5, —2л/5). #

Чтобы использовать метод сопряженных направлений для поиска минимума неквадратичной дифференцируемой функ­ ции, предварительно необходимо привести систему (5.6) к виду,

'не*содержащему матрицу Q. Это можно сделать, если в итера­ ционном процессе

х к = х к 1 + Xfcp*, к Е N,

с выбором значения х* > 0 на каждой fc-й итерации путем минимизации функции

Фк(к) = /(a3*_1 + xp fc), х > 0 ,

и 1с-\-1

= 7jtр

k

I

в основу построения сопряженных направлении

 

+

+ wk+1 положить свойство ортогональности антиградиентов (а значит, и градиентов) минимизируемой функции

(ги*+1, wl) = О, г = 1 , fc.

Такой способ построения сопряженных направлений спуска в литературе получил название метода сопряженных гради­ ентов.

Используя последнее уравнение (5.6) при г = /с, третье урав­ нение, а также равенство (4.57), числитель и знаменатель вто­ рого уравнения (5.6) можно представить в виде

 

fc+i^ _

( y fc+1-u > fc,tofc+1) = _

('QPk, ™fc+1) =

 

 

к

„к\ _

(tOk+l- W k,pk)

(5.7)

1

(Qpk,Pk) =

 

Xjfc

Кк

 

 

 

Таким образом,

вместо второго

уравнения (5.6) имеем 7^ =

_ i^/c+i |2^ (эд*^ pfc)

Это выражение можно преобразовать, если

учесть первое уравнение (5.6), заменив в нем к на к - 1 :

_

 

\wk+l\2

\wk+l\2

lk

(™k,lk-\Pk- l + wk) ~ 7k- i { w k,pk-') + \wk\2'

Но если и в (4.57) заменить к на к 1 , то получим (wk, рк~^) = = 0. Следовательно,

\w k+l \2

 

|^yfc|2 keN.

(5.8)