Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы оптимизации в радиотехнических системах. Практикум
.pdf
% чтобы выполнялось условие a<b и
% искомое значение было единственным
% на интервале [a, b].
18. В файле fib_minimum.m поместить следующий программный код
(после имеющегося кода):
%-------------------------------------------% Вывод сообщения об ошибке
if a>b
error('"а" должно быть меньше "b"');
end;
%-------------------------------------------% Построение графика
x=a:0.001:b; y=f11(x);
plot(x,y,'k',a,f11(a),'o',b,f11(b),'o');
text(a,f11(a)+5,'f11(a)','FontSize',14);
text(b,f11(b)+5,'f11(b)','FontSize',14);
xlabel('x'); ylabel('f11(x)');
grid on; hold on;
19. В файле fib_minimum.m поместить следующий программный код
(после имеющегося кода):
%-------------------------------------------% Вычисление последовательности Фибоначчи
ratio=(b-a)/eps;
n=3; % Количество итераций
f = [1 1];
disp(f(1))
disp(f(2))
while 1
f(n) = f(n-1) + f(n-2);
asd=f(n);
disp(f(n))
if asd > ratio break;
end;
n=n+1;
end;
N=n;
% Первая итерация (k=1)
xL=a+(f(N-2)/f(N))*(b-a); xR=a+(f(N-1)/f(N))*(b-a);
A=f11(xL); B=f11(xR);
21

20. В файле fib_minimum.m поместить следующий программный код
(после имеющегося кода):
%--------------------------------------------
% Вывод результатов предварительного этапа
disp(sprintf('%s', 'Результаты предв. этапа:'));
disp(sprintf('%s%d', 'N = ', N));
disp(sprintf('%s%d', 'k = ', 1));
disp(sprintf('%s%.15f', 'xL=', (a+(f(N-2)/f(N))*(b-a))));
disp(sprintf('%s%.15f', 'xR=', (a+(f(N-1)/f(N))*(b-a))));
disp(sprintf('%s', ' '));
%-------------------------------------------disp(sprintf('%s', 'Результаты выполнения итераций:'));
disp(sprintf('%s%d', 'k = 2...', N-1));
disp(sprintf('%s', ' '));
21. В файле fib_minimum.m поместить следующий программный код
(после имеющегося кода):
%-------------------------------------------% Последующие итерации (k=2...N-1)
for k=2:N-1
if A<B %%%
b=xR;
xR=xL; B=A; xL=a+(f(N-k-1)/f(N-k+1))*(b-a); A=f11(xL);
else
a=xL;
xL=xR; A=B; xR=a+(f(N-k)/f(N-k+1))*(b-a); B=f11(xR);
end;
x=(a+b)/2;
disp(sprintf('%s%d', 'k = ', k));
disp( sprintf('%s %.15f', 'x_min=', x) );
disp( sprintf('%s %.15f', 'f11=', f11(x)) );
plot(x, f11(x),'o');
end;
%-------------------------------------------% Вывод результатов
plot(x,f11(x),'or');
text(x,f11(x)-10,'X_{min}','FontSize',14);
disp( sprintf('%s', ' ') );
disp(sprintf('%s', 'Границы интервала неопр.:'));
disp( sprintf('%s %.15f', 'a=',a) );
disp( sprintf('%s %.15f', 'b=',b) );
hold off;
22

Аналитическое
1
y = x2 – sin(x)
0,01
x∈[–5, 10]
2
y = 4∙x2 – 9∙x
0,001
x∈[–10, 10]
3
y = (x – 5)
2
+ 4
0,001
x∈[0, 14]
4
y = (x – 5)
3
+ 4∙x2 + 1
0,001
x∈[–2, 14]
22. Cохранить изменения файла fib_minimum.m;
23. Выполнить поиск минимума функции методом Фибоначчи. Зна-
чения границ интервала поиска выбрать согласно варианту заданий, указанному преподавателем. Например, для запуска процесса поиска минимума функции в интервале [–5, 10] в главном окне среды Matlab следует
выполнить следующую команду:
>> fib_minimum(-5,10,0.01)
24. Сравнить значения длины интервала неопределенности, полученные в результате поиска минимума функции методами Фибоначчи и золотого сечения.
25. По результатам выполнения п. 24 сделать заключение о преимуществах и недостатках методов Фибоначчи и золотого сечения.
26. В текстовом редакторе среды Matlab создать новый файл и сохранить его под именем fib_maximum.m на жестком диске ПК в папке
X:\…\Komplex_MO\Lab1;
27. В файле fib_maximum.m поместить код файла-функции, выпол-
няющего поиск максимума методом Фибоначчи;
28. Cохранить изменения файла fib_maximum.m;
29. Выполнить поиск максимума функции методом Фибоначчи. Зна-
чения границ интервала поиска выбрать согласно варианту заданий, указанному преподавателем. Например, для запуска процесса поиска максимума функции в интервале [–5, 10] в главном окне среды Matlab следует
выполнить следующую команду:
>> fib_maximum(-5,10,0.01)
Варианты заданий приведены в таблице.
Таблица
Варианты заданий
№ варианта
выражение функции
Погрешность Интервал
23

Контрольные вопросы
1. Приведите последовательность команд на языке Matlab, необходимую для реализации метода золотого сечения. Поясните назначение каждой приведенной команды.
2. Приведите последовательность команд на языке Matlab, необходимую для реализации метода Фибоначчи. Поясните назначение каждой
приведенной команды.
3. Приведите последовательность команд на языке Matlab, необходимую для реализации метода половинного деления. Поясните назначение
каждой приведенной команды.
4. В чем заключается сущность методов Фибоначчи и золотого сечения? Как связаны между собой методы Фибоначчи и золотого сечения?
5. Что означают термины «критерий оптимальности», «целевая функция», «оптимальное значение критерия оптимальности», «текущий интервал неопределенности», «модель объекта проектирования», «вектор
управляемых параметров», «область допустимых значений вектора управляемых параметров»?
6. По каким признакам могут быть классифицированы критерии оптимальности? Что такое детерминированный, стохастический, унимодальный, многоэкстремальный, выпуклый критерии оптимальности?
7. Что означает термин «задача локальной оптимизации»? Что такое
локальный и глобальный минимумы?
8. Что означает термин «задача условной оптимизации»? Что такое
ограничивающая функция варьируемых параметров объекта? Как классифицируются ограничения варьируемых параметров объекта в задаче условной оптимизации?
9. Что означает термин «критерий качества алгоритма оптимизации»?
10. Какие условия окончания поиска наиболее часто используются в
алгоритмах оптимизации? Приведите формулы наиболее часто используемых условий.
11. Назовите наиболее известные методы оптимизации одномерных
функций, поясните сущность каждого метода, перечислите их достоинства
и недостатки.
12. Как определяются абсолютная и относительная погрешности результата численного решения задачи?
24

13. Что означает термин «метод оптимизации нулевого порядка»? Назовите наиболее известные методы оптимизации нулевого порядка, поясните сущность каждого метода, перечислите их достоинства и недостатки.
14. Что такое скорость сходимости метода оптимизации?
15. Какие требования предъявляются к численным алгоритмам оптимизации?
16. Что такое корректность и обусловленность вычислительной задачи?
17. Какое значение имеет погрешность арифметических операций
в системе Matlab? Какое значение имеет погрешность представления числа в формате double в системе Matlab?
18. Какие специальные символы поддерживает арифметика с плавающей запятой в соответствии со стандартом IEEE 754-2008?
25

x
x
x
x≠x
П РАКТИЧЕСКАЯ РАБОТА № 2
Г РАДИЕНТНЫ Е МЕ Т ОДЫ ОПТИМИЗАЦИИ
Цель работы
Изучение градиентных алгоритмов оптимизации функций.
Задание к работе
1. Изучить алгоритмы поиска локальных экстремумов многомерных
функций.
2. Разработать ПО, выполняющее поиск минимума и максимума
функции с использованием градиентных методов.
3. Найти численные значения минимума и максимума функции гради-
ентными методами.
4. Сделать выводы по результатам работы.
Пояснения к работе
В большинстве практических случаев целевая функция является
функцией нескольких переменных, поэтому для нахождения ее минимума
необходимо решить задачу многомерной оптимизации [2]. Если на значе-
ния переменных накладываются некоторые ограничения, то задача поиска
минимума функции называется задачей условной многомерной оптимиза-
ции. При отсутствии ограничений многомерная оптимизация называется
безусловной [2].
Задача безусловной оптимизации функции нескольких переменных
может быть сформулирована следующим образом. Дана некоторая дейст-
вительная функция y = f(x1, x2, …, xi, …, xN) = f(x),
∈X. Требуется при-
ближенно определить значение x*, соответствующее локальному мини-
муму (максимуму) функции, при этом абсолютная погрешность численного решения задачи не должна превышать некоторого значения ε.
Точка x* называется точкой локального минимума функции, если
существует такая малая окрестность U этой точки, что для всех
полняется равенство f(x*)≤ f(x). Если для всех
∈U при
∈U вы-
* выполня-
ется условие f(x*)<f(x), то x* называется точкой строгого локального
26

x2
2
x1
1
e
x
y
e
x
y
y
(y)
grad
⋅
∂
∂
+⋅
∂
∂
=
∇
=
x1
e
x2
e
∂
∂
∂
∂
∂
∂
∂
∂
=∇
Ni21
x
y
,...,
x
y
,...,
x
y
,
x
y
y
минимума [2]. Таким образом, значение функции в точке локального экс-
тремума может быть обозначено y* = f(x*).
Для решения рассмотренной задачи могут быть применены числен-
ные методы прямого поиска [2]. Однако большей эффективностью обла-
дают методы, выполняющие оптимизацию функции с использованием
градиента или его оценок. Градиент указывает направление наибольшего
возрастания целевой функции, следовательно, наискорейшее движение к
локальному максимуму обеспечивается при перемещении вдоль направ-
ления, определяемого градиентом. Для движения в направлении локаль-
ного минимума может быть использован антиградиент, т. е. вектор,
имеющий направление, противоположное градиенту.
Рассмотрим реализацию метода для целевой функции, зависящей от
двух переменных: y = f(x1, x2). Градиент включает в себя значения част-
ных производных функции по каждой переменной. Для целевой функции
y = f(x1, x2) вектор градиента будет определяться следующим образом:
,
где
,
– единичные векторы по осям прямоугольных декартовых ко-
ординат (орты). В общем случае для функции y = f(x1, x2, …, xi, …, xN)
градиент будет представлен N-мерным вектором, компоненты которого
равны частным производным функции:
.
На рис. 2.1 показан пример целевой функции, представленной в виде
семейства линий уровня (x10, x20 – точные значения координат экстремума
целевой функции). Градиент перпендикулярен касательной, проведенной
через точку на линии уровня функции y = f(x1, x2). На рис. 2.2 представлен
пример трехмерного графика некоторой целевой функции.
27

1
k
1
1k
1
x
y
gx:x
∂
∂
⋅+=
+
2
k
2
1k
2
x
y
gx:x
∂
∂
⋅+=
+
i
k
i
1k
i
x
y
gx:x
∂
∂
⋅+=
+
N
k
N
1k
N
x
y
gx:x
∂
∂
⋅+=
+
Рис. 2.1 Рис. 2.2
Наискорейшее движение к экстремуму обеспечивается, когда вектор
движения перпендикулярен касательной к линии уровня y = const в точке
местонахождения (рис. 2.1). Для нахождения экстремума функции следует
выполнить последовательное перемещение по поверхности, образуемой
целевой функцией. Начальная точка поиска выбирается произвольно и далее из начальной точки выполняется движение в направлении, определяемом градиентом (далее будет рассматриваться только задача поиска минимума функции).
В общем случае координаты текущей точки должны быть модифицированы в соответствии со следующими правилами:
,
, … ,
, … ,
,
где k – номер итерации; g – постоянная шага градиентного метода. В данном случае частные производные определяют значения приращений по
координатам x1, x2, …, xi, …, xN. В зависимости от того, как меняется величина g при движении к экстремуму, возможны различные стратегии
движения.
При решении практических задач нахождение аналитических выражений производных целевых функций бывает сильно затруднено. Это
объясняется либо сложностью задания функции, либо тем, что анализируемая функция является не дифференцируемой. Во многих случаях ана-
28

x
y
grad(y)
∂
∂
=
h2
h)f(vh)f(v
h2
Δf
x
y
grad(y)
⋅
−−+
=
⋅
≈
∂
∂
=
f(v+h)
f(v)
f(v–h)
f(x)
Точка, для которой оценивается
скорость изменения функции
v–h
v
v+h
x
0
∆f
h
h
литическое выражение производной функции является настолько сложным, что его реализация в технических системах затруднена. Кроме того,
целевая функция нередко бывает задана в виде нескольких условий. Таким образом, при нахождении экстремумов функции возникает задача
оценки градиента, т. е. задача численного (приближенного) дифференци-
рования функции [3].
Оценивание градиента во многих случаях представляет собой очень
непростую задачу. В большинстве случаев необходимо оценивать значение
градиента, для некоторых задач требуется оценивать только его знак.
На сегодняшний день известны различные способы оценки значения и знака градиента [1–3, 11–13 ]. Наиболее часто компоненты градиента оцениваются с использованием конечных разностей первого порядка [2, 14, 15, 16].
Пусть имеется некоторая функция y = f(x), зависящая от одного аргумента
(рис. 2.3), т. е. градиент представлен единственным компонентом:
.
Рис. 2.3
Для данной функции значение градиента в точке x = v может быть
оценено с помощью следующего соотношения [11]:
где ∆f – конечная разность первого порядка значений функции; h – некоторая константа. В соответствии с определением производной рассмот-
,
29

h2
)v,...,v..., , vh,f(v)v,...,v..., , vh,f(v
x
y
Ni21Ni21
1
1
⋅
−−+
=∆≈
∂
∂
f
h2
)v,...,v..., h, v,f(v)v,...,v..., h, v,f(v
Δ
x
y
Ni21Ni21
2
2
⋅
−−+
=≈
∂
∂
f
h
2
)v
h,...,v
...,
,
v,
f(v
)v
h,...,v
...,
,
v
,f(v
Δ
x
y
Ni
21
N
i2
1
i
i
⋅
−
−+
=≈
∂
∂
f
h2
h)v,...,v..., , v,f(vh)
v,...,v..., , v,f(v
Δ
x
y
Ni21Ni21
N
N
⋅
−−+
=≈
∂
∂
f
ренное соотношение становится точным, если параметр h стремится к 0
[11].
Для функции нескольких переменных, например для y = f(x1, x2, …, xi,
…, xN) в точке с координатами x = v1, v2, …, vi, …, vN, оценка градиента
может быть произведена в соответствии с формулами
,
,
…,
,
…,
.
Оценка градиента для поверхности y = f(x1, x2) показана на рис. 2.4.
Рис. 2.4 Рис. 2.5
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
