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

Таким образом, в результате применения процедуры ис­ ключения отрезка получаем новый отрезок, вложенный в рас­ сматриваемый и заведомо содержащий искомую точку х*. В методах пассивного поиска применение этой процедуры позво­ ляет оценить наибольшую возможную погрешность нахождения точки х». Все рассмотренные далее методы последовательного поиска используют процедуру исключения отрезка для выбора нового отрезка на каждом очередном шаге такого поиска.

2.4.Методы последовательного поиска

Метод дихотомии. Рассмотрим последовательный по­ иск точки х* € [0, 1], в которой унимодальная на отрезке [0, 1] функция /(х ) достигает наименьшего значения /* = /(х*). Ме­ тод прямого поиска, основанный на делении пополам отрезка, на котором находится точка х*, называют методом дихото­ мии (от греческих слов 5ixot — на две части и тоцт) — сечение).

Опишем алгоритм этого метода. Пусть известно, что на k-и ша­

ге последовательного поиска х* G € [a*, bk] С [0,1] (на первом шаге при k = 1 имеем ai = 0 и bi = 1 ). На отрезке [а*, 6*] длиной выбе­ рем две точки хк\= (ак + Ьк)/2 —5

и хк2 = (а* + Ьк)/2 + 6 (рис. 2.7), где Рис. 2.7

S> 0 — некоторое достаточно малое число. Вычислим значе­ ния f(xk 1) и f(xk2) функции f(x) в этих точках и выполним

процедуру исключения отрезка. В результате получим новый отрезок [а*+1, fyb+i] С [а*, 6*]. Если длина lk+i нового отрезка больше заданной наибольшей допустимой длины е* интервала неопределенности, то алгоритм метода дихотомии переходит к (к + 1)-му шагу, повторяя все описанные для к-го шага дей­

ствия. Если же lk+i ^

то вычисления прекращают и полага-

ют X, = (ajfc+i + ^/c+i)/2.

 

 

Так как Zjt+i = 1к/2 + 6, или

25 = (Z* —25)/2, то

1к- 2 5 =

h - 2 5

2*_1

Из этого равенства выводим следующую формулу длины Z* отрезка [а*, Ь*], получаемого на А;-м шаге метода дихотомии:

k = lj^ - + 26.

(2.6)

Из (2.6) следует, что -4 25 при к —»•оо, но при этом /* > 25. Поэтому выполнение неравенства 1к+\< £*, означающее дости­ жение заданной точности нахождения точки я*, возможно лишь при условии выбора 25 < е». Кроме того, нужно учитывать неизбежную погрешность, возникающую при вычислении при­ ближенных значений f(x) функции f(x). Это приводит к допол­ нительной погрешности Д, при нахождении точки я* (см. 2.7). Поэтому выбор значения 5 ограничен и снизу, т.е.

Д. < 25 < е».

(2.7)

Если эти неравенства нарушаются, то знак разности f(xki) — —/(я*г) может не совпадать со знаком разности f(x ki) —f(x k2), что приводит к ошибочному выполнению процедуры исключе­ ния отрезка.

Итак, метод дихотомии — это последовательное постро­ ение на каждом А:-м шаге поиска точек хк\= (ак + Ьк)/2 5

и хм = (ak + fyfc)/2 + симметричных относительно середины отрезка [а*;, Ь^) длины I£. После выполнения fc-го шага будет выделен отрезок [а^+1, bfc+i] длины и вычислено N = зна­ чений функции. Используя формулу (2.6) для длины отрезка

(интервала неопределенности) и полагая l\ = 1, получаем

ifl = lk+1 = -gjfc+i + 2<J = 2дг/2 + 2(J'

(2‘8)

Сравнивая (2.8) с (2.5), видим, что скорость сходимости метода дихотомии значительно выше скорости сходимости оптималь­ ного пассивного поиска.

Отметим, что после исключения отрезка на к-м шаге опи­ санного алгоритма точки и х^2 принадлежат новому от­ резку [а/ь+ъ bfc+i]> причем одна из них является внутренней для этого отрезка. Но вычисленное в этой точке значение функ­ ции /(х ) в методе дихотомии не используют для исключения отрезка на следующем шаге, а проводят вычисления в двух но­ вых точках. Существуют методы последовательного поиска, в которых на каждом к-м шаге начиная с к = 2 вычисляют лишь одно новое значение функции в точке, принадлежащей отрезку [ajb+i, 1]. Это значение вместе с уже вычисленным на преды­ дущем шаге значением функции во внутренней точке отрезка [а*, Ьк] используют при выполнении процедуры исключения от­ резка на следующем шаге последовательного поиска.

М етод зол отого сечения. Как известно*, золотым се­ чением отрезка называют такое его деление на две неравные части, при котором отношение длины всего отрезка к длине его большей части равно равно отношению длины большей части к длине меньшей.

Термин „золотое сечение1 ввел Леонардо да Винчи***. Зо­ лотое сечение широко применяли при композиционном постро­

и м - Васют инский Я., а также: К оробко В .И .

**Леонардо да Винчи (1452-1519) — итальянский живописец, скульптор, архитектор, ученый и инженер.

ении многих произведении мирового искусства, в том числе в античной архитектуре и в эпоху Возрождения.

Рассмотрим к-й шаг последовательного поиска. Чтобы вы­ полнить процедуру исключения отрезка на этом шаге, отре­

зок [a,k,bk]

необходимо двумя внутренними точками Xku х&2,

 

 

 

 

хк\ < хк2'> разделить на три ча­

У

 

1

 

сти. Эти точки выберем симме­

 

 

 

трично относительно середины

 

 

1

 

Д хИ)

 

1

 

отрезка [а*, б*;] (рис. 2.8) и так,

 

1

 

 

 

1

 

 

 

! щ

*fc+i

1

 

чтобы каждая из них произво­

1

h

1_

 

1

дила золотое сечение

отрезка

_1-----------

 

 

х [а>к,Ьк\- В этом случае отре­

О

Хк\

Хк2

 

 

Рис. 2.8

 

зок [ак+1, b*+i] внутри будет со­

 

 

держать одну из точек

х^2

 

 

 

 

(другая будет одним из концов отрезка), причем эта точка будет производить золотое сечение отрезка [a*+i, bfc+i]- Это

вытекает из равенства длин отрезков [а*, хы] и [х ^

Ьь]. Таким

образом, на (к + 1)-м шаге в одной из точек

Xk+ip

значение функции вычислять не нужно. При этом отношение h/h+i длин отрезков сохраняется от шага к шагу, т.е.

h

_ h+i = Т = const.

(2.9)

h+1

^+2

 

Число т называют отношением золотого сечения.

Последовательный поиск, в котором на fc-м шаге каждая из симметрично выбранных на отрезке [а*, 6*] точек х^х, х^ осу­ ществляет золотое сечение этого отрезка, называют методом золотого сечения. В этом методе каждое исключение отрез­ ка уменьшает оставшийся отрезок в г раз.

Выясним, чему равно отношение золотого сечения. Так как точки Xk\ и £*2) хк\ < хк2<>выбраны симметрично относительно середины отрезка [а^, Ь^], то

Ьк хк2 — хк\ ак — ^к

(см. рис. 2.8). Для определенности будем считать, что на А;-м шаге выбран отрезок [о*, ж*г]- Тогда на (к + 1)-м шаге одной из точек деления (а именно правой) будет точка Xki- Значит, длина lk+2 отрезка, выбираемого на (А; + 1 )-м шаге, совпадает

с длиной отрезка

[а, хы]

и

верно

равенство h+2 = h —h+i-

Подставляя найденное выражение для

2 в уравнение (2.9),

получаем

 

 

 

 

 

 

h

_

h+i

 

 

 

lk+1

lk+1

 

или т = 1/(т — 1).

Преобразуя это

соотношение, приходим к

квадратному уравнению т2 —т —1 = 0, имеющему единственное

положительное решение г = ■

и 1,618034.

Предположим, что отрезком минимизации унимодальной

функции f(x) является [0,1],

т.е. а\ = 0, 61 = 1 и Zi = 1 . На

первом шаге последовательного поиска (fc = 1 ) на отрезке [0, 1]

выбираем две точки хц = а\ + (1 — l /r ) 6i = 1 1

и х \2

=

а\ + Ь\/т= 1 /т, осуществляющие золотое

сечение

отрезка

[0, 1].

Вычисляем значения минимизируемой функции в этих

Точках и выполняем процедуру исключения

отрезка. Если,

/(жп)

< /(Ж12), то выбираем отрезок [ai, Ж12], т.е. полагаем

ц2 = а\ = 0, 62 = £12;

в противном случае выбираем отрезок

[жп, 61],

т.е. полагаем

а,2 = жц, 62 = b\ =

1.

Кроме

того,

в

Первом

случае принимаем Х2 = жц, а во

втором случае

т2 = Ж12. Точка Ж2 — одна из точек, осуществляющих золотое сечение отрезка [6^2, 62], меньшая в первом случая и большая во втором. Если длина вновь полученного отрезка больше заданной допустимой длины £* интервала неопределенности, то следует перейти ко второму шагу алгоритма, на котором одна из точек Ж21, Ж22 есть точка Ж2, а вторую можно найти, Например, по формуле а2 + 62 —Ж2. На втором шаге алгоритма вычисляем лишь одно значение функции в точке, симметричной х 2 относительно середины отрезка [02, 62]. Если же длина I2 отрезка [02, 62], полученного после первого шага алгоритма,

оказалась меньше £*, то поиск прекращают и полагают х* « ~ (р>2+ &2)/2.

Пусть на А;-м шаге, к ^ 2, последовательного поиска по методу золотого сечения выбран отрезок [а^, Ьк] и в нем точка Xfc, осуществляющая золотое сечение этого отрезка. Значение /( х k) функции в этой точке уже вычислено на предыдущем шаге. Находим вторую точку хк золотого сечения по формуле

хк акИ" bk Хк

ивычисляем в ней значение функции. Если хк < хк, то хк\= хк

и£*2 = Хк, иначе хн = хк и х*2 = я*.

Пусть для определенности xjt < хк (см. рис. 2.8) и хк\= х^, £*2 = 5*. Если /(xjfei) < f{xk2), то выбираем отрезок

т.е. полагаем

= а^, 6^+1 = ^2? zjfc+i =

иначе выбираем

ОТреЗОК [Xfci, 6fc],

Т.е. полагаем Q>k-\-1 =

^A:-fl =

^Ai-fl =

= хк2 - Длину ^+i

нового отрезка [ак+и bk+i] сравниваем с £*

и принимаем решение, продолжать поиск (при

^.£*) или

нет

(при Zfc+i < £*). В

случае прекращения поиска полагаем

х* ~

(o>kЬк)/2.

 

 

 

 

Согласно описанию

алгоритма, на первом шаге

значение

функции вычисляют в двух точках, а на каждом из последую­ щих шагов вычисляют лишь одно значение функции. Поэтому после к шагов алгоритма значение функции будет вычислено в N = к + 1 точках. Поскольку после каждого шага интервал не­ определенности уменьшается в т раз, то для длины 1к+ 1 отрезка [ак+1, bfc+i] получаем 1к+\ = 1\/тк = l / r fc, а зависимость lzN дли­ ны интервала неопределенности от количества N вычисленных значений функции выражается формулой

lZN = k + \ = ^ k = ^W Z Г-

(2 1 ° )

Алгоритмы методов золотого сечения и дихотомии анало­ гичны. Различие состоит лишь в том, что в методе дихотомии расстояние 26 между внутренними точками x^i, хк2 отрезка

[a*, bfc] на каждом k-м шаге остается неизменным, а в методе золотого сечения оно зависит от номера шага поиска и умень­ шается с уменьшением длины Ik отрезка по мере возрастания номера шага. Действительно, в методе золотого сечения на к-м шаге поиска внутренними точками отрезка [a*, bk] будут Xki = = dk + (1 —1 /r)lk и Xk2 — Q>k+ h/r , a расстояние между ними равно Xk2 ~Xki = ( 2 /т - l)lk = (\/5-2)/jt «0,236068/^.

М етод Фибоначчи. Пусть при поиске точки х* Е [0, 1], в которой унимодальная на отрезке [0, 1] функция /(х ) прини­ мает наименьшее на этом отрезке значение, можно вычислить ее значения только в двух точках. Тогда предпочтение следу­ ет отдать методу дихотомии при S<?С1, так как он позволит уменьшить интервал неопределенности почти вдвое, а метод золотого сечения — лишь в г « 1,618 раз. Сравнение (2.8) и (2.10) показывает, что при количестве вычисляемых значений функции N ^ 4 эффективность метода золотого сечения стано­ вится выше, чем метода дихотомии.

Однако при любом заданном общем числе N > 2 вычисляе­ мых значений функции можно построить еще более эффектив­ ный метод, состоящий из N 1 шагов. Он сочетает преимуще­ ство симметричного расположения внутренних точек x^i, Xk2 на отрезке относительно его середины, реализованное в методах дихотомии и золотого сечения, с возможностью на каждом шаге изменять отношение l k / h + i длин сокращаемого и нового отрезков. Как показано при обсуждении метода золо­ того сечения, в случае выбора внутренних точек симметрично относительно середины отрезка для трех последовательных ша­ гов этого метода выполняется соотношение

h -i = h + h+u Л = 2,3 ,...

(2-11)

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

можно точнее, т.е. с наименее возможной длиной интервала не­ определенности, отыскать точку х* наименьшего значения этой функции на отрезке [0,1].

При выполнении процедуры исключения отрезка на послед­ нем, (N 1)-м шаге имеем отрезок [ayv-i, 6/v-i] длины IN - I с двумя внутренними точками xyv-i и X N , симметрично распо­ ложенными относительно середины отрезка на достаточно ма­ лом расстоянии 28 друг от друга

 

 

(рис.

2.9).

В этих точках вычи­

 

 

слены значения / ( TJV- I ) и /(тдг)

 

 

функции /(х ).

Пусть

для опре­

 

 

деленности /(хдг) < f ( % N - 1), то­

 

 

гда для нового отрезка [а#, Ьуу]

 

 

длины IN = IN - I /2 + <5внутренней

 

 

будет точка хду, а точка XN- I со­

Рис. 2.9

 

впадет с одним из его концов.

 

В такой ситуации при выборе

 

 

х* = XN длина интервала неопределенности равна пока неиз­

вестной длине IN отрезка [адг, Ь/Д. Через IN

можно выразить

длину IN- 1 = 2/дг - 2(5

отрезка [адг_i, byv—i] -

Далее в соответ­

ствии с (2.11) получаем

 

 

 

 

 

IN- 2 = IN- i + IN = 3/yv — 25,

Jyv-з = /лг-2 + IN- I — 5/уу—45,

IN—4 = IN- з + IN —2 = 8/yv — 6<5,

/jv—5 = ^w-4 + Jyv-з =

13/yy — 105

и в общем виде

 

 

 

 

 

 

IN - K =

-

2 ^ 5 ,

#

= 0, iV -1 ,

(2.12)

где коэффициенты Fm определены рекуррентным соотноше­ нием

Fn = Fn - i + F m. 2, m = 3, iV—1, FI = F2 = 1.

(2.13)

Так как при К — N 1 длина /уу-д- = ii = 1 отрезка [0,1] извест­ на, то из (2.12) можно найти длину интервала неопределенности

(2.14)

FN+I Fn + 1

Существует алгоритм метода прямого поиска, удовлетворя­ ющий соотношению (2.14).

Все коэффициенты Fm принадлежат множеству N натураль­

ных чисел, и их называют числами Фибоначчи*

В табл. 2.1

представлены эти числа до номера m = 25.

 

 

 

 

 

 

 

 

 

 

Таблица 2.1

771

771

Fm

771

Fm

771

Fm

771

Fm

1

1

6

8

и

89

16

987

21

10946

2

1

7

13

12

144

17

1597

22

17711

3

2

8

21

13

233

18

2584

23

28657

4

3

9

34

14

377

19

4181

24

46368

5

5

10

55

15

610

20

6765

25

75025

Метод, использующий числа Фибоначчи для выбора длин

отрезков Ik, а значит, и точек Xk 6 [0, 1], к = 1 , N,

в которых

вычисляют значения минимизируемой функции, называют ме­ тодом Фибоначчи (иногда — оптимальным последователь­ ным поиском). Если на первом шаге поиска (к = 1 , К = N 1) интервал неопределенности имеет длину 1\, то в соответствии с (2.12) и (2.14) длина fa нового отрезка [02, 62] равна

FN , ,

~ FN FN- 2

fa = F N IN 2<5.F/V_2 = ~P-----ll + 2 ° --------- p-----------------

I ' N + l

-ГЛЧ-1

FN

28

FN+ 1 Zi + ( - l ) " +1 FN+I

Опишем алгоритм метода, пренебрегая малой величиной 8 ,

т.е. принимая

 

h = ТР5Г

(2'15)

Несложно проверить, что в этом случае выполнение процедуры исключения отрезка на последнем, (N 1 )-м шаге поиска при­ водит к совпадению внутренних точек \и ждг (см. рис. 2.9).

* Фибоначчи, или Леонардо Пизанский (1180-1240) — итальянский ма­ тематик.

 

Отметим, что уже при N = 11 имеем i'ta/i'ii = 144/89 ~

«

1,617978,

а при N = 21 получаем F22/F21 = 17711/10946 «

«

1,618034,

что совпадает с отношением т золотого сечения

с точностью до 10~6. Таким образом, на первом шаге длина исходного отрезка уменьшается практически так же, как и в методе золотого сечения.

При /1 = 1 из (2.15) находим I2 = FN /FN+I - Таким образом, учитывая (2.13), заключаем, что на первом шаге выбор точек, симметричных относительно середины отрезка [0,1], можно

определить по формулам

 

 

xi = h =

FN

FN

FN- I

_ ^ _

i W

Х2 = 1 — h 1 —

,

X 2 < X\,

 

FN+I

* N + 1

 

причем расстояние между ними будет равно

 

 

 

FN _ FN- 1

FN- 2

 

 

di=X \ —Х2

FN+I

 

 

 

FN+I FN+I

 

После выполнения на этом шаге процедуры исключения отрез­ ка одна из точек х\, Х2 будет граничной точкой нового отрезка

[0 2 , ai],

а другая — его внутренней

точкой, которую

обозна­

чим х'2.

Вторая внутренняя точка

на этом отрезке

должна

быть выбрана симметрично точке х'2 относительно его середи­ ны. Аналогично происходит выбор второй внутренней точки нового отрезка на всех последующих шагах поиска.

На к-м шаге в соответствии с равенством (2.12), в котором следует положить К = N —к, и равенством (2.14) длина отрезка [аь М равна Ik = FN+2 - ь/FN+I и происходит ее уменьшение в h/h+i = FN+2- k/FN+i-k раз. Если внутренние точки на этом отрезке обозначить ak и /?*,, то проведенные рассуждения по­

зволяют написать

 

 

oik = о-к+ FN- H

Рк = ак+ FN+1

ак <0к, к = 1, N —1.

FN+I '

F N + I

Подчеркнем, что реализация метода Фибоначчи предпола­ гает априорное задание требуемого количества N вычисляемых