Красноярский государственный университет цветных металлов и золота Кафедра автоматизации производственных процессов

реклама
Красноярский государственный университет цветных металлов и золота
Кафедра автоматизации производственных процессов
ЦМ
Дисциплина “Методы
оптимизации”
Красноярск 2005 г.
Лабораторная работа № 3
“ Одномерная безусловная оптимизация”
ЦЕЛЬ РАБОТЫ
1. Изучить предлагаемые методы одномерной безусловной оптимизации.
2. В соответствии с вариантом задания, определенным преподавателем, составить программы, реализующие методы поиска, и найти точку минимума функции f(x) на отрезке (a,b).
3. Оформить отчет о выполнении задания с приведением условия задачи, алгоритмов и программ указанных методов поиска.
ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Алгоритм пассивного поиска минимума
Отрезок (a,b) исходный отрезок неопределенности. Пусть N - число точек, в
которых необходимо провести вычисления целевой функции f(x), т.е. N экспериментов. Точки, в которых необходимо провести эксперименты, определяются следующим образом:
xi  a 
ba
 i , i  1,2,3,...N .
N 1
Среди вычисленных значений {f(xi)} (i=1,N), ищется точка xj , в которой достигается минимум:
f(xj)= min f( xi ).
1iN
Найденная точка принимается за приближенное решение задачи ~x  x j . Исходный отрезок неопределенности (a,b) после экспериментов в N точках сужается
до (xj-1,xj+1), длина которого равна:
LN  LN ( x1 , x2 ,...x N )  max( xi 1  xi 1 )  x j 1  x j 1  2
1i  N
ba
.
N 1
Точность найденного решения ~x равна половине отрезка неопределенности,
1
2
т.е. | x*  ~x |  , где   LN и x* - точное решение,  - точность решения.
Алгоритм деления интервала пополам
Схема алгоритма.
Шаг 1. Задаются a,b,. Производим эксперимент в точке x 2 
( a  b)
, т.е. вы2
числяем y2=f(x2).
Шаг 2. Проводим эксперименты в остальных точках блока: x1 
( x2  b)
, y3=f(x3).
2
Находим x j такую, что f(xj)=min {f(xi)}.
(a  x 2 )
,
2
y1=f(x1), x3 
1 i  3
Тогда точное решение x* содержится на отрезке x j 1 , x j 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,
а длина получившегося отрезка неопределенности будет LN 
ba ba
 [N ] .
2к
2 2
Следовательно, достигнутая точность будет | x *  ~x |  , =1/2LN.
Метод дихотомии
Схема алгоритма.
Шаг 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).
Шаг 4. Если b-a2, то x=(a+b)/2, ~y  f ( ~x ) и поиск заканчивается. Иначе перейти к шагу 2.
После к итераций общее число экспериментов будет N=2к, а длина получившегося отрезка неопределенности LN 
ba
N
1
x | LN .
  . Следовательно, | x *  ~
2
2 2
Метод золотого сечения
Схема алгоритма
Шаг1. Задаются a, b,  и   1.618... .
Вычисляют x1  b 
Шаг2.
а) Если
x1  a  b  x2 , y1  f {x1 ) .
ba
, x2  a 
ba
, y  f ( x ), y  f ( x ) .
1
1
2
2


y1  y 2 , то полагают b  x2 , x2  x1 , y 2  y1 и вычисляют
б)
Если
и вычисляют
y1  y 2 , то полагают
a  x1 , x1  x2 , y1  y 2
x2  a  b  x1 , y 2  f ( x2 ) .
Шаг3. Если b  a   , то переходят к шагу 2. Иначе если y1  y 2 , то полагают
~
x  x1 и ~
y  y1 , если y1  y 2 , то полагают ~
x  x2 и ~
y  y2 .
Закончить поиск.
После каждой итерации длина отрезка неопределённости уменьшается в 
раз. Так как первая итерация начинается после двух экспериментов, то после N
экспериментов длина отрезка неопределённости будет LN 
ba
 N 1
.
Метод чисел Фибоначчи
Схема алгоритма
Шаг 1. Задаются a, b, N . Вычисляются числа Фибоначчи F0 , F1 ,..., FN . Определяется:
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 ) .
б) Если
то полагают a  x1 , x1  x2 , y1  y2
и вычисляют
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. Заданы a,b,  . Вычислить f (a), f (b), f (a), f (b) .
Шаг 2. Если b  a  2 , то полагаем ~x  (a  b) / 2, ~y  f ( ~x ) . Поиск окончен. Если
(bf (b)  af (a))  ( f (b)  f (a))
, f (c), f (c) . Если f (c)  0 , то
f (b)  f (a)
полагаем ~x  c, ~y  y и поиск окончен. Если f (c)  0 , то следующий отрезок (c, b) .
Если f (c)  0 , то (a, c) . Повторить шаг 2.
b  a  2 , то вычислить c 
Метод парабол
Схема алгоритма
Шаг 1. Задаются a,c,b и . Вычислить f(a), f(c), f(b).
t , если _ t  c
Шаг 2. Вычислить x  (a  c)

2
, если _ t  c.
, y=f(x), где
1
  f (a)  f (c)   (c  b)  (b  a)
1
2
t   ( a  c) 
2
(c  b)  f (a)  (b  a)  f (c)  (a  c)  f (b)
Шаг 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, то закончить поиск, положив ~
Отчет о работе
Отчет должен содержать подробный ход решения для всех задач. Каждая задача должна сопровождаться графиком, по которому было бы видно, что функция
действительно имеет минимум в найденной точке. Отчет необходимо иметь в
РАСПЕЧАТАННОМ (написанном от руки) виде.
Скачать