Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы оптимизации в радиотехнических системах. Практикум

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
% чтобы выполнялось условие 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]