Все лабораторные работы / Всё стасовское новое / 4_our_
.docМинистерство образования РФ
Санкт-Петербургский государственный электротехнический
университет «ЛЭТИ»
Кафедра САПР
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 4
по учебной дисциплине «методы оптимизации»
на тему «Исследование градиентных методов»
Вариант 1
Выполнили:
Смирнов С.А.
Маркосов А.С.
Баранов А.А.
Группа: 5372
Факультет: КТИ
Проверил:
(должность, Ф.И.О.)
Санкт-Петербург
2007
Оглавление:
Задание…………………………………………………………………………….3
Описание методов оптимизации…………………………………………………3
Спецификация программы……………………………………………………….4
Листинг программы ……………………………………………………………...5
Результаты тестирования и Выводы…………………….……………………….7
Ответы на контрольные вопросы………………………………………………...8
Задание:
Цель работы – разработка программы многомерной минимизации целевых функций на основе применения простых градиентных методов поиска.
Методы многомерной оптимизации:
М1 – метод Коши;
Функция y(x) |
Начальная точка (x1)t |
Значение минимума (x*)t |
100(x2 – x12)2 + (1 – x1)2 |
(–1.2; 1) (1.5; 2) (–2; –2) |
(1; 1) |
Описание методов оптимизации:
Метод Свенна 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]
Метод Дэвидона.
Этот метод является аналогом метода кубической аппроксимации в задачах поиска минимума функции нескольких переменных по заданному направлению. Идея метода заключается в том, чтобы на ТИЛ найти аппроксимирующий минимум строя полином 3-го порядка.
Начальный этап:
-
Взять ε, х 0 – начальную точку поиска, p – направление поиска.
-
Найти начальный шаг α1 = min{ η,|(y1-y’)/y’1|}, где η=1,2. y1=y(x1), y’1 =y’(x1,p)
-
Получить начальный интервал поиска [a,b] методом Свенна 4.
Основной этап:
-
Найти аппроксимирующий минимум, т.е. точку r по формулам:
r = a+αr *p
αr = α a +γ*( α b - αa )
γ=(z-f’a+W)/(f’b-f’a+2*W)
W=√z2-f’a*f’b
z=f’a+f’b+3*(fa-fb)/(b-a)
-
Проверить КОП если Y’r<=ε, то остановиться. X= a+ αr *p Иначе сократить ТИЛ двумя способами:
Y’r<0 -> [r,b]
Y’r>0 -> [a,r]
Установить k=k+1 и вернуться на шаг 1.
Можно модифицировать алгоритм – ввести смещение точек на α0 .
Метод Коши
Начальный этап:
Взять ε - погрешность,
х 0 – начальную точку поиска,
k=1 – счетчик количества итераций.
Основной этап:
Шаг1: Вычислить антиградиентное направление pk = - grad (yk );
Шаг2: Найти оптимальный шаг αk с помощью метода Дэвидона;
Шаг3: Перейти в новую точку:
- xk+1= xk + αk*pk ;
- k=k+1;
Шаг4: Проверить КОП (любой):
(1) ||∆ xk||<= e1
(2) | ∆yk|<= e2
(3) ||grad (yk)||<= e3
(4) ||∆ xk||/(1+||∆ xk||)<= e4
(5) ||grad (yk)||/(1+||grad (yk)||)<= e5
Если КОП выполняется остановимся x* = xк+1 , иначе вернуться на
Шаг1.
Блок-схемы использованных методов.
Метод Свенна
h1=0.1*|x1|
x2=x1+h1
x1=x2;
x2=x1+h;
h=2*h;
Меняем местами а
и b
h=-h;
x2=x1+h;
Да
Нет
Нет
Да
Нет
Да
Метод Дэвидона
Спецификация программы:
Текст программы:
Результаты тестирования метода:
Ниже приведена таблица с результатами работы программы для функции f(x) = 100(x2 - x12)2 + (1 - x1)2, с различными стартовыми точками и точностями вычисления.
Точность: |
|
0.0001 |
|
0.00001 |
|
0.000001 |
Метод Коши |
К |
x* |
K |
x* |
K |
x* |
X0=(1.2,1) |
6241 |
(0.999902, 0.999803) |
9625 |
(0.999991, 0.999981) |
14207 |
(0.999999, 0.999998) |
X0=(1.5,2) |
614 |
(1.00011, 1.000221) |
812 |
(1.000011, 1.000022) |
1106 |
(1.000001, 1.000002) |
X0=(-2,-2) |
5704 |
(0.999899, 0.999797) |
7410 |
(0.99999, 0.99998) |
9114 |
(0.999999, 0.999998) |
Выводы:
В данной работе был использован метод Свенна4 и метод Дэвидона для получения оптимального шага. Поиск ведется в пространстве, начиная с заданной начальной точки x0 по антиградиентному направлению p0. И в результате выполнения метода Коши находится оптимальный шаг, доставляющий минимум в результате исчерпывающего спуска вдоль антиградиентного направления pк. Полученный шаг соответствует точке x* = xк+1 . Большое количество итераций и неточность минимума объясняется тем, что вблизи минимума для реальных (овражных) функций метод зацикливается, либо рыскает и останавливается.
Ответы на контрольные вопросы:
1. Поясните организацию линейного поиска на основе методов золотого сечения, Фибоначчи и Пауэлла.
Организация поиска минимума функции многих переменных в заданном направлении аналогична поиску минимума целевых функции. Различие заключается в описании (задании) функции, а также в методе Свенна, при помощи которого производится нахождение интервала локализации минимума.
Рассмотрим метод Свенна для функции многих переменных.
Его отличие заключается в том, что для опредения направления убывания функции мы определяем значение производной функции в нуле. Если оно больше нуля тогда знак шага фукции a меняется на противопложный. А удвоение шага происходит до тех пор пока не поменяет знак значения произведения производных функции на концах отрезка.
В своей работе я задавал функцию описывая каждую переменную через шаг функции - a.
Методы золотого сечения и метод Пауэлла приведены в данном отчёте в пункте описания методов оптимизации.
2. Найти производную dfx в точке x1=(1,0)t по направлению p1=(1,1)t для функции
f(x) = x12 – x1x2 + 2*(x2)2 - 2x1.
g1=2x1-x1-2=2-2=0.
g2=-x1+4*(x2)= -1
Таким образом dfx = g1*p1 + g2*p2 = 0*1 + (-1)*1 = -1.
3. Как изменится процедура минимизации методами Больцано, дихотомии, ДСК, Дэвидона при переходе от поиска на числовой прямой к поиску на плоскости R2?
При минимизации вышеуказанными методами на числовой прямой направление всегда фиксировано и задается во всех используемых методах изначально. При поиске на плоскости применяются градиентные методы, в которых направленеи изменяется, т.е. необходимо подавать не постонные значения направления, а переменные.
4. Что является направлением наискорейшего спуска в точке x = (1,1)t для целевой функции y(x) = x12 + 2x22 ?
Направлени наискорейшего спуска.
(вычислим антиградиентное направление движения)
5. Найдите минимум y(x) = x12 - x1x2 + 2x22 - 2x1 + ex1+x2, двигаясь из точки x = (0,0) в направлении наискорейшего спуска.
- (0.4998;-0.4998)