Санкт-Петербургский Государственный Электротехнический Университет «лэти» фкти сапр
Лабораторная работа №3
«Линейный поиск по направлению»
Вариант 1
Выполнили: Байда А.Ю.
Турченко П.Н.
Проверил: Алешкевич П.А.
Санкт-Петербург
2004г
Задание
Целью работы является разработка программы, реализующей процедуру минимизации функции многих переменных в заданном направлении;
Реализовать на языке С++ методы оптимизации. Протестировать программу и сравнить результаты работы заданных методов оптимизации при использовании различных критериев окончания поиска и при задании различных значений погрешности локализации минимума. Сделать выводы.
Описание методов оптимизации.
Метод Свенна. (для поиска в пространстве по направлению)
С помощью метода Свенна получают начальный интервал локализации минимума [a,b] .
Начальный этап. Для запуска метода необходимо:
(1) задать x0 – начальная точка.
(2) выбрать шаг h равным 0.001 или min{η,|(y1-y’)/y’1|}, где η=1,2.
(3) выбрать направление поиска p.
Основной этап
Шаг 1. Установить направление убывания функции. Взять x2=x1+h*p. Если f2>f1, поменять направление движения.
Шаг 2. Вычислять xk+1=xk+hk*p, hk=2hk-1 до тех пор пока не придём в точку xn такую что fn>fn-1.
Шаг 3. Установить начальный интервал локализации минимума a1=xn-2 и b1=xn.
Метод Свенна 4.
Начальный этап. Для запуска метода необходимо:
(1) задать x0 – начальная точка.
(2) выбрать шаг h равным 0.001 или min{η,|(y1-y’)/y’1|}, где η=1,2.
(3) выбрать направление поиска p.
Основной этап
Шаг 1. Установить направление убывания функции. h=h, если y’(x0,p)<0 и h=-h, если y’(x0,p)>0.
Шаг 2.Двигаться в направлении р, вычисляя значение функции в точках xk+1=xk+hk*p, hk=2hk-1. Пока производная не поменяет знак, т.е. Y’m-1*Y’m<0
Шаг 3. Фиксируем начальный интервал: [Xm-1,Xm]
Метод Золотого Сечения 2. (для функции нескольких переменных)
Метод Золотого Сечения является процедурой линейного поиска минимума унимодальной функции f(x) на интервале [a, b], отличающейся тем, что на каждой итерации очередная пробная точка делит интервал локализации в отношении постоянном для всех интервалов τ=L2/L1=L3/L2=...Ln/Ln-1.
Начальный этап
(1) Задать константу , начальный интервал [a1, b1] вычисляется методом Свенна.
(2) Вычислить одну стартовую точку x1 = a1 + 0.618L*p L=|a-b|
(3) Положить k = 1.
Основной этап
Шаг 1. Взять очередную точку x2=a1+b1-x1 симметричную исходной x1 и сократить ТИЛ рассмотрением четырёх ситуаций: если x1<x2 и f(x1)<f(x2) то ak+1=ak, bk+1=x2, x1=x1; если x1<x2 и f(x1)>f(x2) то ak+1= x1, bk+1= bk, x1=x2; если x1>x2 и f(x1)<f(x2) то ak+1=x1, bk+1= bk, x1=x1; если x1>x2 и f(x1)>f(x2) то ak+1=ak, bk+1=x1, x1=x2.
Положить k=k+1.
Шаг 2. Проверить критерий окончания поиска: если |a-b| < фиксируем аппроксимирующий минимум x*=(a+b)/2.
и на Шаг 1.