Если при любых x1,x2, X неравенство будет строгим, то

advertisement
Лабораторная работа №1
Тема: Безусловная одномерная оптимизация
Цель работы: знакомство с оптимизационными задачами, изучение различных методов
одномерной оптимизации и сравнение эффективности их применения для конкретных целевых
функций.
1. Краткие теоретические сведения
1.1 Постановка задачи одномерной безусловной
оптимизации
Поиск экстремума функции одной переменной имеет самостоятельный интерес, так как
является составной частью многих методов многомерной оптимизации. От правильной
организации одномерного поиска существенно зависит успех решения всей задачи. Кроме того,
одномерная оптимизация, будучи простой по формулировке задачей, позволяет легко войти в
общую проблематику оптимизационных задач.
Далее, для конкретности, мы будем рассматривать задачу оптимизации на примере задачи
минимизации в силу эквивалентности двух типов оптимизационных задач (максимизации и
минимизации). Задача поиска минимума целевой функции формулируется в виде:
x*=arg min f(x), xX,
где X – множество допустимых точек, среди которых ищется точка x*, доставляющая минимум
f(x) целевой функции.
Другая распространенная запись задачи минимизации
min f ( x)
.
x X
Когда X=R, мы имеем дело с одномерной безусловной задачей минимизации, т.е. когда
целевая функция f(x) имеет только один простой аргумент и область X есть вся вещественная ось
чисел.
В методах одномерной оптимизации вместо X=R рассматривается отрезок X=[a,b],
содержащей искомое решение x*. Такой отрезок называется отрезком неопределенности, или
отрезком локализации. Относительно целевой функции f(x) часто предполагается, что она
унимодальная.
Определение: Функция f(x) называется унимодальной на X=[a,b], если существует такая точка
x*X, что
f(x1)>f(x2), если x1<x2<x*, x1,x2X,
f(x1)<f(x2), если x*<x1,x2, x1,x2X.
Если ограничиваться рассмотрением лишь непрерывных функций f(x), то свойство
унимодальности функции попросту означает наличие у нее единственного локального минимума и
этот минимум достигается в точке x=x*.
В ряде методов относительно целевой функции f(x) предполагается, что она выпуклая на X.
Определение: Функция f(x) называется выпуклой на x=[a,b],
если f(x1+(1-)x2)f(x1)+(1-)f(x2)
при любых x1,x2,X и всех , 01.
Если при любых x1,x2,X неравенство будет строгим, то функция f(x) называется строго
выпуклой.
Непрерывная строго выпуклая функция является унимодальной. Однако не всякая
унимодальная функция является выпуклой или непрерывной.
1
1.2 Алгоритм пассивного поиска минимума
Отрезок [a,b] исходный отрезок неопределенности. Пусть N - число точек, в которых
необходимо провести вычисления целевой функции f(x), т.е. N экспериментов. Точки, в которых
необходимо провести эксперименты, определяются следующим образом:
 Если _ N  2k  1  нечётное, то

 xi  a  b  a  i
N 1

i  1,2,3,...N

 Если _ N  2k  чётное, то

ba
 x2i  a 
i
k 1

 x2i 1  x2i  

i  1,2,..., k
Среди вычисленных значений {f(xi)} (i=1,N), ищется точка xj , в которой достигается минимум:
f(xj)= min f( xi )
1iN
x  x j . Исходный отрезок
Найденная точка принимается за приближенное решение задачи ~
неопределенности [a,b] после экспериментов в N точках сужается до [xj-1,xj+1], длина которого
равна:
 ba
2 N  1 , если _ N  2k  1

LN  LN ( x1 , x2 ,...x N )  max( xi 1  xi 1 )  x j 1  x j 1   b  a
1i  N
  , если _ N  2k

 N 2  1
Точность найденного решения ~
x |  ,
x равна половине отрезка неопределенности, т.е. | x*  ~
1
где   LN и x* - точное решение.
2
1.3 Алгоритмы активного поиска минимума
В алгоритмах активного поиска очередная точка, в которой производится эксперимент,
выбирается с учетом информации, полученной в предыдущих опытах. Рассмотрение этих
алгоритмов начнем с методов блочного поиска, которые сочетают в себе пассивные и
последовательные стратегии поиска. При этом вычисления в точках объединены в блоки, в
каждом из которых проводится одновременно ni экспериментов), общее число экспериментов
m
будет
n
i 1
i
 N ), т.е. блок – это совокупность из нескольких экспериментов, которые проводятся
одновременно (пассивный поиск). Результаты, полученные в (i-1)-м блоке, становятся известны
перед началом экспериментов в i-м блоке {xij (j=1,2,…,ni}(последовательный поиск). Если размеры
блоков равны единице, т.е. ni=1, то мы имеем обычный последовательный алгоритм поиска.
1.3.1 Алгоритм равномерного блочного поиска
Схема алгоритма
Шаг 1. Задаются исходный отрезок неопределенности [a,b],  - точность приближенного
решения ~
x , число экспериментов в блоке – n (нечетное, n=2k-1). Проводим эксперимент в
середине отрезка [a,b], т.е. вычисляем yk=f(xk), где xk=(a+b)/2.
2
Шаг 2. Проводим эксперименты в остальных точках блока: yi=f(xi), где xi=a+i*(b-a)/(n+1),
i=1,2,..,n, ik. Находим точку xj, в которой достигается минимум среди вычисленных значений:
f(xj)=min f(xi), следовательно, точное значение минимума x* содержится на отрезке [xj-1,xj+1].
Шаг 3. Полагаем a=xj-1, b=xj+1, xk=xj, yk=yj. Если b-a2, то ~
x  xk , ~
y  yk и поиск
заканчивается. Иначе перейти к шагу 2. Если заданная точность  достигнута после т итераций,
т.е. после экспериментов в m блоках, то длина отрезка неопределенности после всех N вычислений
(N=n+(m-1)(n-1)=(n-1)m+1) будет:
m
1
 ba
*
x | LN .
LN   2
 и |x ~
2
 n 1 
1.3.2 Алгоритм деления интервала пополам
Это вариант предыдущего алгоритма при 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).
Находим x j такую, что f(xj)=min {f(xi)}.
1 i  3
Тогда точное решение 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, а длина
ba ba
получившегося отрезка неопределенности будет LN  к  [ N ] , где [z] – целая часть числа z.
2
2 2
~
Следовательно, достигнутая точность будет | x *  x |  , =1/2LN.
1.3.3 Метод дихотомии
Это алгоритм блочного поиска для ni=n=2, т.е. когда в блоке два эксперимента. Так как
пассивная составляющая алгоритма, т.е. блок, содержит четное число экспериментов, то
оптимальный выбор точек x ij , в которых необходимо провести эксперименты, будет
неравномерным, в отличие от предыдущих алгоритмов, где число экспериментов в блоке было
нечетным и, соответственно, расположение точек равномерным. Если блок содержит два
эксперимента, то оптимальное (дельта оптимальное) расположение точек, в которых будут
проводится эксперименты, это как можно ближе к середине отрезка. Такое расположение точек
позволяет получить наименьший отрезок неопределенностей после экспериментов в блоке.
Схема алгоритма.
Шаг 1. Задаются a,b, и  - малое положительное число, значительно меньшее чем .
Шаг 2. Определяется середина отрезка x=(a+b)/2. Производятся эксперименты в двух точках
близких середине: y1=f(x-), y2=f(x+).
Шаг 3. Определяется следующий отрезок локализации, т.е. определяется какой из отрезков
[a,x+] или [x-,b] содержит точное решение x*. Если y1y2, то это отрезок [a,x+] и b=x+, иначе
это отрезок [x-,b] и a=x-, т.е. выбранный отрезок локализации мы снова обозначили как [a,b].
y  f (~
x ) и поиск заканчивается. Иначе перейти к шагу 2.
Шаг 4. Если b-a2, то x=(a+b)/2, ~
3
После к итераций общее число экспериментов будет N=2к, а длина получившегося отрезка
1
ba
x | LN .
неопределенности LN  N   . Следовательно, | x *  ~
2
2 2
А теперь перейдём к рассмотрению чисто последовательных методов поиска.
1.3.4 Метод золотого сечения
Для того чтобы уменьшить отрезок неопределённости [ a, b ], нам необходимо вычислить
значение целевой функции f (x) , по крайней мере, в двух точках на отрезке [ a, b ].
В результате этих двух экспериментов отрезок неопределённости сузится до отрезка [ a, x2 ] или
[ x1 , b ]. Так как у нас нет никаких оснований предпочесть один из этих вариантов, то точки x1 и
x 2 должны быть симметричны относительно середины отрезка [ a, b ]. В этом случае длины
отрезков [ a, x2 ] и [ x1 , b ] будут равны. Таким образом, остаётся вопрос как выбрать точку x1 .
В методе золотого сечения точка x1 выбирается из соображения, что должно выполняться
соотношение:
длина[a, b] длина[ x1 , b]

   1.618033989...
длина[ x1 , b] длина[a, x1 ]
т.е. точка x1 делит отрезок [ a, b ] по правилу «золотого сечения», где  - есть «золотое
отношение». Точка x 2 определяется как точка симметричная к x1 относительно середины отрезка.
4
В результате экспериментов у нас получается отрезок неопределённости [ a, x2 ], содержащий
точку x1 , или отрезок неопределённости [ x1 , b ], содержащий точку x 2 . Оказывается, что
остающаяся точка на суженном отрезке неопределённости делит его вновь по правилу «золотого
сечения». Следовательно, чтобы, в свою очередь, уменьшить новый отрезок неопределённости,
нам не достаёт одного эксперимента, а именно, вычисления целевой функции в точке,
симметричной к оставшейся точке относительно середины этого нового отрезка. Всё
продемонстрировано на рисунке,
а)
б)
где буквы со штрихами обозначают новый отрезок неопределённости. Вариант а) соответствует
случаю, если новым отрезком неопределённости будет [ a, x2 ], а вариант б) – отрезку [ x1 , b ].
В приводимой ниже схеме алгоритма остающиеся отрезки неопределённости
переименовываются каждый раз как [ a, b ], а точки, в которых проводятся эксперименты на этом
отрезке, обозначается через x1 и x 2 , причём x1  x2 . Кроме того, y1 и y 2 имеют следующие
значения: y1  f ( x1 ) и y 2  f ( x2 ) .
Схема алгоритма
Шаг1. Задаются a, b,  и   1.618... . Вычисляют
ba
ba
x1  b 
, x2  a 
, y1  f ( x1 ), y2  f ( x2 ) .


Шаг2. а) Если y1  y 2 , то полагают b  x2 , x2  x1 , y 2  y1 и вычисляют
x1  a  b  x2 , y1  f {x1 ) .
б) Если y1  y 2 , то полагают a  x1 , x1  x2 , y1  y 2 и вычисляют x2  a  b  x1 , y 2  f ( x2 ) .
5
Шаг3. Если b  a   , то переходят к шагу 2. Иначе если y1  y 2 , то полагают ~
x  x1 и ~
y  y1 ,
~
~
если y1  y 2 , то полагают x  x 2 и y  y 2 .
Закончить поиск.
После каждой итерации длина отрезка неопределённости уменьшается в  раз. Так как первая
итерация начинается после двух экспериментов, то после N экспериментов длина отрезка
неопределённости будет
ba
L N  N 1 .

1.3.4 Метод чисел Фибоначчи
Этот метод применяется, когда число экспериментов N заранее задано. Метод чисел
Фибоначчи, также как и метод золотого сечения относится к симметричным методам, т.е. точки, в
которых выполняются два эксперимента, на основе которых происходит уменьшение отрезка
неопределённости, расположены симметрично относительно середины отрезка. Вот только выбор
точки x1 происходит на основе других соотношений. Для этого используются числа Фибоначчи:
F0 , F1 , F2 , F3 ,... , где Fi  Fi 2  Fi 1 (i  2,3,...) и F0  F1  1 .
Точка x1 определяется из соотношения:
длина[a, x1 ] FN 2

,
длина[a, b]
FN
F
т.е. x1  a  (b  a ) N 2 . Точка x1 делит [a, b] на две неравные части. Отношение малого
FN
отрезка к большему равно FN 2 / FN 1 . Точка x2 определяется как точка, симметричная к x1
F
F
относительно середины отрезка [a, b] . Поэтому x2  b  (b  a ) N 2  a  (b  a ) N 1 . При этом
FN
FN
будет выполняться условие x1  x2 .
В результате экспериментов в точках x1 и x2 у нас получится отрезок неопределённости
[a, x2 ] , содержащий точку x1 , или отрезок неопределённости [ x1 , b] , содержащий точку x2 .
Остающаяся точка делит новый отрезок неопределённости на две неравные части в отношении:
меньшая _ часть
 FN 3 / FN 2 . То есть в методе Фибоначчи остающаяся точка делит отрезок на
большая _ часть
две неравные части в пропорциях определяемых числами Фибоначчи. Так на к-ом шаге это
меньшая _ часть FN  K 2

,
отношение
равно
а
длины
отрезков
равны:
большая _ часть
FN  K
F
F
меньшая _ часть  N  K 1 (b  a ) и большая _ часть  N  K (b  a ) . Всё это показано на рисунке:
FN
FN
6
а)
б)
длина[a, x1 ] FN 2

длина[ x1 , b] FN 1
длина[ x2 , b] FN 3

длина[a, x2 ] FN 2
длина[a, x1 ] FN 3

длина[ x1 , b] FN 2
Для того чтобы в свою очередь уменьшить получившийся отрезок неопределённости, надо
определить симметричную точку относительно середины отрезка и произвести эксперимент в ней.
Этот процесс продолжается, пока не будет проведено N экспериментов.
Схема алгоритма
Шаг 1. Задаются a, b, N . Вычисляются числа Фибоначчи F0 , F1 ,..., FN . Определяется:
7
x1  a  (b  a) FN 2 / FN ,
x2  a  (b  a) FN 1 / FN ,
y1  f ( x1 ), y 2  f ( x2 ).
Шаг 2.
а) Если
y1  y2 , то полагают b  x2 , x2  x1 , y2  y1 и вычисляют
x1  a  b  x2 , y1  f ( x1 ) .
б) Если y1  y2 , то полагают a  x1 , x1  x2 , y1  y2 и вычисляют x2  a  b  x1 , y2  f ( x2 ) .
Повторить шаг 2 N  2 раза.
Шаг 3. Если y1  y2 , то полагают ~
x  x1 и ~
y  y1 . Если y1  y2 , то полагают ~
x  x2 и ~
y  y2 .
Закончить поиск.
Длина отрезка неопределённости в методе Фибоначчи LN  (b  a) / FN .
1.4 Методы поиска, основанные на аппроксимации
целевой функции
Суть этих методов заключается в том, что по полученной в ходе вычислений информации
строится аппроксимирующая функция и её минимум принимается за точку очередного
вычисления. Такие методы дают хорошие результаты при минимизации достаточно гладких
унимодальных функций.
1.4.1 Метод касательных
Пусть функция f (x) выпукла и дифференцируема на [a, b] . Идея метода состоит в
следующем. Пусть [a, b] - отрезок неопределённости и f (a), f (a), f (b), f (b) - результаты
вычислений в точках a и b . По этой информации строится аппроксимирующая функция,
представляющую из себя кусочно-линейную функцию, состоящую из касательной
La ( x)  f (a)  f (a)( x  a) к f (x) в точке a и касательной Lb ( x)  f (b)  f (b)( x  b) к f (x) в
точке b .
Полученная аппроксимирующая функция есть ломанная состоящая из прямой La (x) на [a, c]
и Lb (x) на [c, b ] , где с – точка пересечения касательных. Легко заметить, что при f ( a )  0 и
f (b)  0 минимум аппроксимирующей функции достигается в точке с. Значение точки
пересечения с можно определить по формуле
8
(bf (b)  af (a))  ( f (b)  f (a))
f (b)  f (a)
В точке с производятся вычисления f (c ) и f (c ) . Если f (c)  0 , то решением задачи будет
*
x  c . Если же f (c)  0 , то в качестве следующего отрезка неопределённости будет [ a, c ] . Если
же f (c)  0 , то – отрезок [c, b ] . Процесс повторяется до тех пор, пока f (c)  0 или отрезок
неопределённости не достигнет заданной точности.
c
Схема алгоритма
Шаг 1. Заданы a,b,  . Вычислить y1  f (a), y2  f (b), z1  f (a), z2  f (b) .
x  (a  b) / 2, ~
y  f (~
x ) . Поиск окончен. Если b  a  2 , то
Шаг 2. Если b  a  2 , то полагаем ~
(bz 2  az 1 )  ( y 2  y 1 )
, y  f (c), z  f (c) . Если z=0, то полагаем ~
x  c, ~
yy и
вычислить c 
z 2  z1
поиск окончен. Если z  0 , то a  c, y1  y, z1  z . Если z  0 , то b  c, y2  y, z2  z . Повторить шаг
2.
1.4.2 Метод парабол
Рассмотрим алгоритм квадратичной интерполяции или метод парабол, т.е. в качестве
аппроксимирующей функции используется парабола. Для однозначного задания параболы
необходимы три точки. Пусть имеются три точки, для которых выполняется a<c<b, f(c)f(a),
f(c)f(b). Так как [a,b] – отрезок неопределенности и f(x) – унимодальная функция, то найти такую
точку c нетрудно. Парабола, проходящая через три точки (a,f(a)), (c,f(c)), (b,f(b)), имеет вид
 f (b)  f (c) f (a)  f (c)  ( x  c)( x  b) f (b)  f (c)

P( x)  


( x  c )  f (c )
(a  c) 
ba
bc
 (b  c)
Поскольку f – унимодальная функция, то хотя бы одно из неравенств
f(c)f(a), f(c)f(b)
строгое и, следовательно, коэффициент при старшем члене P(x) положителен. Тогда P(x)
достигает минимума в точке
1 (b  c) 2 ( f (a)  f (c))  (c  a) 2 ( f (b)  f (c))
,
t c
2 (b  c)( f (a)  f (c))  (c  a)( f (b)  f (c))
причем (a+c)/2t(c+b)/2. Эта точка и выбирается в качестве точки очередного вычисления
значения функции.
9
Если оказалось, что t=c, условимся в качестве точки очередного вычисления выбирать точку
(a+c)/2. Итак, следующее вычисление проводится в точке
t , если _ t  c
x  (a  c)
, если _ t  c.

2
Определим новый отрезок неопределенности с лежащей внутри него точкой, для которой
выполняются условия аналогичные условиям, которым удовлетворяла точка c. В силу
унимодальности функции f и в зависимости от выполнения или невыполнения условий x<c,
f(x)<f(c), f(x)=f(c) это будут отрезки с точкой внутри: [a,c] и x; [x,b] и c; [x,c] и (x+c)/2; [a,x] и c; [c,b]
и x; [c,x] и (x+c)/2. Смотри рисунок. Далее строится парабола, определяется ее минимум, и т.д., до
тех пор, пока длина отрезка неопределенности не удовлетворяет заданной точности.
10
Схема алгоритма
Шаг 1. Задаются a,c,b и . Вычислить ya=f(a), yc=f(c), yb=f(b).
t , если _ t  c
Шаг 2. Вычислить x  (a  c)
, y=f(x), где
, если _ t  c.

2
2
1 (b  c) ( y a  yc )  (c  a) 2 ( yb  yc )
t c 
.
2 (b  c)( y a  yc )  (c  a)( yb  yc )
Шаг 3. А) При x<c.
Если y<yc, то b=c, c=x, yb=yc, yc=y.
Если y>yc, то a=x, ya=y.
Если y=yc, то a=x, b=c, c=(x+c)/2, ya=y, yb=yc, yc=f(c).
Б) При x>c.
Если y<yc, то a=c, c=x, ya=yc, yc=y.
Если y>yc, то b=x, yb=y.
Если y=yc, то a=c, b=x, c=(x+c)/2, ya=yc, yb=y, yc=f(c).
x  x, ~
y  y , иначе перейти к шагу 2.
Шаг 4. Если b-a, то закончить поиск, положив ~
2. Задание на лабораторную работу
2.1. Изучить предлагаемые методы одномерной безусловной оптимизации.
2.2. В соответствии с вариантом задания, определенным преподавателем, составить
программы, реализующие методы поиска, и найти точку минимума функции f(x) на отрезке [a,b].
а) Если в варианте задания указано число экспериментов N, то сравнить заданные в варианте
методы по получаемой длине отрезка неопределенности.
б) Если же указана точность искомого решения, то сравнить методы по количеству
экспериментов, понадобившихся для достижения заданной точности.
2.3. Оформить отчет о выполнении задания с приведением условия задачи, алгоритмов и
программ указанных методов поиска, таблицы результатов сравнения рассмотренных методов,
заключения по результатам сравнения методов.
3. Варианты заданий
3.1 Методы одномерной безусловной оптимизации:
а) пассивный оптимальный алгоритм;
б) алгоритм блочного равномерного поиска;
в) алгоритм деления интервала пополам;
г) метод дихотомии;
д) метод золотого сечения;
е) метод Фибоначчи;
ж) метод касательных;
з) метод парабол.
11
3.2 Варианты задач
№
1
2
3
4
5
6
7
8
9
10
Целевая функция
x 2  6  e 0,15 x
Отрезок
[a,b]
[-1,0]
Точность  или число
экспериментов N
N=22
x 2  4  e 0, 25 x
x 4  0,4  arctg5 x
[0,1]
[-1,0]
N=23
N=20
x 4  1,5arctgx
[0,1]
N=21
x 2  8 e 0,55 x
 4 x  e|x 0, 2|
1,4 x  e|x2|
[-2,0]
[0,2]
[0,2]
=10-3
=1.5*10-3
=5*10-3
x2  ex
| x | e10 x
[-1,0]
[-1,0]
N=18
=10-3
10 cos x  e x
[0,3]
=5*10-4
12
Download