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

3Л_Одномерная Оптимизация

.pdf
Скачиваний:
19
Добавлен:
01.06.2015
Размер:
806.46 Кб
Скачать
1 i 3

Алгоритм деления интервала пополам

Это вариант алгоритма равномерного блочного поиска при n=3.

Схема алгоритма.

Шаг 1. Задаются a, b, . Производим эксперимент в точке x2=(a+b)/2, т.е. вычисляем y2=f(x2)

Шаг 2. Проводим эксперименты в остальных точках блока: x1=(a+x2)/2, y1=f(x1) и x3=(x2+b)/2, y3=f(x3).

Находим xj такую, что f(xj)=min {f(xi)}.

Тогда точное решение x* содержится на отрезке [xj-1,xj+1]. Предполагается

.

 

x0 a,

x4 b

~

 

~

Шаг 3. Полагаем a=xj-1, b=xj+1, x2=xj, y2=yj. Если b-a 2 , то

,

x x2

y y2

и поиск заканчивается. В противном случае перейти к шагу 2.

 

 

После к итераций общее число проведенных экспериментов равно N=2к+1, а

длина получившегося отрезка неопределенности будет

 

 

,

L

 

 

b a

 

b a

 

 

 

 

N

 

 

 

 

 

 

 

2к

2[ N 2]

 

 

 

 

 

 

 

 

 

Следовательно, достигнутая точность будет ~ | , =1/2LN. x

*

x

|

Метод дихотомии

Это алгоритм блочного поиска для ni=n=2, т.е. когда в блоке два эксперимента. Метод дихотомии является самым естественным и наиболее распространенным на практике. Деление отрезка пополам производится так:

 

1 \2

 

 

 

 

 

1\2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(1+ )\2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

\2

 

 

 

(1+ )\4

 

 

 

 

 

 

 

L2 1= (1+ )/(1+1) =(1+ )/2

 

 

 

(1+3 )\

 

 

 

4

 

 

 

L2*2 = ½ (1/2 - /2) + /2 = ¼ + ¾

L2*3 = ½ ( ¼ - ¾ ) + /2 = 1/8 +7/8

После проведения k пар экспериментов получим отрезок неопределенности

L2 k=2-k + (1 – 2-k ) .

После проведения n экспериментов (n=2k) отрезок неопределенности будет равен

(без учета ) Ln=2-n\2.

Эффективность метода охарактеризуется величиной: (L0/Ln) = 2-n\2 .

Для получения интервала размера L при поиске методом дихотомии (половинным

делением) потребуется сделать

n

2

ln

L0

 

экспериментов

ln 2

L

 

 

 

 

Пример решения задачи методом дихотомии

Пример 1. Необходимо найти максимум функции у=12х-2х2 методом дихотомии, если

отрезок, на котором выполняются замеры, будет L =[0,10];

=0.2, l =1.

 

 

 

 

 

 

 

 

 

 

 

 

 

0

n

 

Решение. Число необходимых замеров можно определить из формулы

 

n

2

 

ln

1

 

 

 

2

 

ln

9,8

8.

 

 

 

 

l0

 

 

 

 

 

 

 

 

 

 

ln 2

 

 

 

ln 2

0,8

 

 

 

Согласно стратегии поиска первые два замера выполним в точках

 

x

10

 

4,9;

x

 

 

10

5,1

 

 

 

 

 

 

2

 

 

 

1

 

2

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значения функции в этих точках будут следующие:

у1=12х1-2х21=12*4.9-2*(4.9)2=11; у2=12х2-2х22=12*5.1-2*(5.1)2=29.

Интервал неопределенности сократился до L2=[0;5.1].

В новых точках эксперимента x

5,1

2,45;

x

 

 

5,1

2,65

3

2

 

 

4

2

 

 

 

 

 

 

получаем у3=17.5, у4=17.8. Интервал неопределенности стал L4=[2.45;5.1].

Далее получаем х5=3.63, x6=3.83, y5>y6, L6=[2.45;3.85], откуда х7=3.05, х8=3.25; у7=18,

у8=17.8. Интервал неопределенности после четырех пар экспериментов сократился до L8*=[2.45;3.25], 18=0.8<1n.

В качестве решения принимаем ymax= y7=18. Этот максимум достигается в точке х=3.05. (Нетрудно убедится , что максимальное значение функции f(x) действительно равно 18 и достигается в точке х=3.)

Метод чисел Фибоначчи

Метод применяется, когда число экспериментов N заранее задано. Метод чисел Фибоначчи относится к симметричным методам, т.е. точки, в которых выполняются два эксперимента, на основе которых происходит уменьшение отрезка неопределённости, расположены симметрично относительно середины отрезка.

Определение этих точек происходит на основе числа Фибоначчи:

,

 

F0 , F1, F2 , F3, ..., Fi

Fi 2 Fi 1

 

где (i 2,3,...)

и F0 F1 1

 

 

Точка измерения определяется из соотношения:

 

 

 

 

 

 

 

 

 

 

 

длина[a, x1 ]

 

FN 2

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

длина[a,b]

 

 

 

FN

 

 

 

 

 

откуда

x a (b a)

FN 2

 

 

. Точка х

1

делит [a,b] на две неравные части.

 

 

 

 

 

 

 

 

1

 

 

 

FN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отношение малого отрезка к большему равно FN 2 / FN 1 . Точкаx2 определяется как

 

точка, симметричная к

 

x1 относительно середины отрезка [а,в]

 

 

Поэтому

x

2

b (b a)

FN 2

 

a (b a)

 

FN 1

 

При этом будет выполняться условие

x x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

1

.

 

 

 

 

FN

 

 

 

 

FN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В результате экспериментов получается отрезок неопределённости [а,х2], содержащий

точку х1, или отрезок неопределённости [х1], содержащий точку х2. Остающаяся

точка делит новый отрезок неопределённости на две неравные части в пропорциях

определяемых числами Фибоначчи.

Схема расположения точек измерения по методу Фибоначчи

В результате проведения (n-2) измерений получен минимальный интервал

Ln 2, концы которого обозначим хн и хк. Внутри него в т. х’ находится эксперимент, при котором был получен наилучший результат из всех первых (n-2) испытаний.

Ln 2

Ln 1

Ln

х1

 

 

 

 

 

 

 

 

 

х2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x’ Ln 1

x’’

x’’’

 

Ln

 

н

 

 

 

к

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проделав (n-1)-й эксперимент в точке х’’, получим новый интервал неопределенности

н, х’’) или (х’, хк ) длиной Ln 1 . На этом отрезке окажется эксперимент с наибольшим значением функции, а последнее измерение х’’’ должно быть сделано так, чтобы длина последнего интервала Ln была независима от его исхода. Для этого должно выполняться условие

 

 

Ln =x’’’- х’= х

- х’’

 

 

 

 

к

 

 

 

 

Тогда

Ln 2

 

 

xн ) Ln Ln 1

3Ln

т.к. Ln (Ln 1 ) / 2

xк xн (xк x ) (x

 

 

Ln 3 Ln 2 Ln 1 5Ln 2

 

 

 

 

 

Ln 4 Ln 3 Ln 2 8Ln 3

 

 

 

 

 

....

Ln (k 1) Ln (k 2) Fk 1 Ln Fk 1

 

 

 

Ln k

 

 

и

L1 Fn Ln Fn 2 Ln L1 / Fn (Fn 2 / Fn )

 

Алгоритм метода Фибоначчи

Шаг 1. По заданной ln точности рассчитывается вспомогательное число

N bk aн ln

Шаг 2. Для определения необходимого числа опытов n находится такое число

Фибоначчи Fn, чтобы выполнялось неравенство Fn-1<N<Fn;

Шаг 3. Определяется минимальный шаг поиска по формуле m

bк aн

;

 

 

 

Fn

Шаг 4.

Рассчитывается значение функции f(x) в начале интервала, т.е. f(a);

Шаг 5.

Следующая точка, в которой вычисляется значение f(x): х1н+m*Fn-2;

Шаг 6.

Если f(x1)>f(a) (шаг удачный), то следующая точка определится как x2=x1+mFn-3;

при f(x1)<f(a) (шаг неудачный) х2=х1-mFn-3.

Шаг 7.

Последующие шаги выполняются с уменьшающейся величиной шага, которая

для i-го шага будет xi mFn j 2 в соответствии со

следующим правилом. Если при выполнении шага значение функции в точке

xi+1=xi+ xi оказывается больше, т.е. f(xi+1)>f(xi) (шаг удачный), то следующий (i+1)-й шаг выполняется из точки хi+1: xi+2=xi+1+ xi+1. Если i-й шаг неудачный, т.е. f(xi+1)<f(xi), то следующий (i+1)-й шаг выполняется из точки хi, т.е. xi+2=xi- xi+1.

Указанный процесс продолжается до тех пор, пока не будут исчерпаны все числа Фибоначчи в убывающей последовательности. Последний n-ий шаг выполняется посередине отрезка Ln-1 (методом половинного деления).

Пример решения задачи методом Фибоначчи

Пример 2. Необходимо найти максимум функции у=12х-2х2 методом Фибоначчи. Интервал точности положения максимума (максимально допустимый интервал неопределенности) 10=0.1L0. Отрезок, на котором задана функция L0=[0, 10]=10, где хн=0, хк=10. Минимально допустимый интервал неопределенности, соответствующий минимальному расстоянию между экспериментами, при котором они различны

ε=0.01.

Решение. В соответствии с алгоритмом найдем N= 10/1 = 10, F5<N<F6, откуда Fn= F6 =13,

n=6. Определим максимальный шаг поиска m xк xн 10 0.77.

Fn 13

Найдем точку х1 в которой вычисляется значение y1 : x1н+mFn-2н+ mF4 = 0+0.77*5 = 3.85; у1= 46-29.6 =16.4.

Найдем точку х2 : x2=x1+mFn-3= 3.85+0.77*3 = 6.42; у2=77-83=-6.

Поскольку y1>y2, получим L2=[0;6.42]. Так как f(x2)<f(x1) (шаг неудачный), то в соответствии с алгоритмом следующий шаг выполняется из точки х1 т.е.

х43 – mFn-i-2 = x1 – mF6-2-2 = 3.85-0.77*2 = 2.31; у3=27.7-10.8=16.9. Поскольку y3>y1

получим L3=[0;3.85].

Так как y3>y1 (шаг удачный), то направление шага (знак приращения) не меняется и х43 – mF1=2.31-0.77*1=1.54; у4=13.76. Поскольку у3>у4, то L4=[1.54;3.85].

Так как у43 (шаг неудачный), то меняется направление шага:

х53+mF0=2.31+0.77*1=3.1; у5=18. Поскольку у53, то L5=[2.31;3.85].

Числа Фибоначчи исчерпаны и x6 находится с использованием метода половинного деления: x6 =(3.85+2.31+0.01)/2= 3.085; y5=17.99.

Ответ. В точке х=3.085 функция достигает максимума ymax = 17.99.

Метод золотого сечения

Метод используется когда требуется найти не собственно экстремум функции, а то значение параметров, при котором достигается некоторое условие, например f(x) Y, т.е заранее не возможно оценить необходимое число опытов

Метод золотого сечения, также как и метод Фибоначчи, относится к симметричным методам. Для уменьшения отрезка неопределённости [а,в], вычисляют значение целевой функции в двух точках отрезка. В результате этих экспериментов отрезок неопределённости сузится до отрезка [а,х2] или 1,в]. Так как нет никаких оснований предпочесть один из этих вариантов, то точки х1 и х2 должны быть симметричны относительно середины отрезка [а,в], т.к. в этом случае длины отрезков [а,х2] и [х1] будут равны.

Этот метод, также как и метод Фибоначчи, требует выполнения условия

Lj-1= Lj + Lj+1 , где k=1,2,…n,

и предполагает постоянство отношений длин последовательных интервалов

неопределенности:

L j 1

 

L j

 

 

 

 

 

 

L j

L j 1

Проведем эксперимент, выполняя одновременно эти два условия. Разделив первое условие на Lj , получим: 2- -1=0,

откуда =

1

 

 

 

5

1,6180...

 

2

 

 

 

 

 

- это значение и обусловило название метода.

Схема положения точек исследования по методу золотого сечения

Вметоде золотого сечения точка х1 выбирается из соображения, что должно выполняться соотношение:

 

длина [a,b]

 

длина [x1,b]

C

 

длина [x1,b]

длина [a, x1]

т.е. точка х1 делит отрезок [а,в]

по правилу «золотого сечения», где

С - есть «золотое отношение». Точка х2 определяется как точка симметричная к х1 относительно середины отрезка.

В результате экспериментов получается отрезок неопределённости [а,х1], содержащий

точку х2, или отрезок неопределённости [х2], содержащий точку х1. Точка,

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

 

 

1\

 

 

1\ 2

 

 

 

 

а

 

х2

х1

 

 

 

в

 

 

 

 

 

1\ 2

1\

 

 

 

 

 

 

 

 

 

Схема алгоритма метода золотого сечения

Шаг 1. Задаются 1.618... и

 

a, b, . Вычисляют

 

 

 

 

 

 

x b

b a

, x

 

a

b a

, y f (x ), y

 

f (x

)

 

 

 

 

 

2

 

 

2

 

 

 

 

1

 

 

 

 

 

 

 

 

 

1

 

 

1

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 2.

а) Если

y1 y2 , то полагают b x2 , x2

x1 , y2

y1

и вычисляют

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 a b x2 , y1 f {x1 )

 

 

 

 

 

 

 

 

 

 

б) Если

y1 y2 , то полагают

 

a x1 , x1

x2 , y1

y2

и вычисляют

 

 

 

 

 

 

x

2

a b x ., y

2

f (x

2

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Шаг 3.

Если b a , то переходят к шагу 2.

 

 

 

 

~

~

 

 

 

В противном случае если

y1

y2 , то полагают

,

 

 

x

x1 и y y1

 

 

а если

y1 y2 , то полагают

~

x2 и

~

y2 .

 

 

 

 

 

 

x

y

 

 

 

 

 

 

Закончить поиск.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

После каждой итерации длина отрезка неопределённости уменьшается в

раз. Так

как

первая

итерация начинается

 

после двух

экспериментов,

то

после N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

экспериментов длина отрезка неопределённости будет

 

 

 

.

 

 

 

 

 

 

 

 

 

 

b a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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