Красноярский государственный университет цветных металлов и золота Кафедра автоматизации производственных процессов ЦМ Дисциплина “Методы оптимизации” Красноярск 2005 г. Лабораторная работа № 3 “ Одномерная безусловная оптимизация” ЦЕЛЬ РАБОТЫ 1. Изучить предлагаемые методы одномерной безусловной оптимизации. 2. В соответствии с вариантом задания, определенным преподавателем, составить программы, реализующие методы поиска, и найти точку минимума функции f(x) на отрезке (a,b). 3. Оформить отчет о выполнении задания с приведением условия задачи, алгоритмов и программ указанных методов поиска. ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ Алгоритм пассивного поиска минимума Отрезок (a,b) исходный отрезок неопределенности. Пусть N - число точек, в которых необходимо провести вычисления целевой функции f(x), т.е. N экспериментов. Точки, в которых необходимо провести эксперименты, определяются следующим образом: xi a ba i , i 1,2,3,...N . N 1 Среди вычисленных значений {f(xi)} (i=1,N), ищется точка xj , в которой достигается минимум: f(xj)= min f( xi ). 1iN Найденная точка принимается за приближенное решение задачи ~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 1i N ba . 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 ba ba [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*. Если y1y2, то это отрезок (a,x+) и b=x+, иначе это отрезок (x-,b) и a=x-, т.е. выбранный отрезок локализации мы снова обозначили как (a,b). Шаг 4. Если b-a2, то x=(a+b)/2, ~y f ( ~x ) и поиск заканчивается. Иначе перейти к шагу 2. После к итераций общее число экспериментов будет N=2к, а длина получившегося отрезка неопределенности LN ba N 1 x | LN . . Следовательно, | x * ~ 2 2 2 Метод золотого сечения Схема алгоритма Шаг1. Задаются a, b, и 1.618... . Вычисляют x1 b Шаг2. а) Если x1 a b x2 , y1 f {x1 ) . ba , x2 a ba , 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 ba 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, то закончить поиск, положив ~ Отчет о работе Отчет должен содержать подробный ход решения для всех задач. Каждая задача должна сопровождаться графиком, по которому было бы видно, что функция действительно имеет минимум в найденной точке. Отчет необходимо иметь в РАСПЕЧАТАННОМ (написанном от руки) виде.