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

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

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
10. Какие критерии используются для определения условий оконча-
ния вычислений градиентных методов?
11. Приведите последовательность действий при выполнении поиска
минимума функции градиентным методом с постоянным шагом.
12. Как изменяется чувствительность градиентного метода при при-
ближении к экстремуму?
13. В каких системах применяются градиентные методы? Назовите
основные достоинства и недостатки градиентных методов.
14. В каких случаях используется предварительная оценка константы
Липшица?
41
П РАКТИЧЕСКАЯ РАБОТА № 3
ГЛОБАЛЬНАЯ ОПТИМИЗАЦИЯ МНОГ ОМЕРНЫ Х ФУ НКЦИЙ
Цель работы
Изучение методов поиска глобальных экстремумов многомерных
функций.
Задание к работе
1. Изучить алгоритмы поиска глобальных экстремумов многомерных функций.
2. Разработать ПО, выполняющее поиск глобальных минимума и максимума функции.
3. Найти численные значения глобальных минимума и максимума функции.
4. Сделать выводы по результатам работы.
Пояснения к работе
Экстремумы, найденные в практических работах № 1 и № 2, имеют локальный характер, т. е. от начальной точки рассмотренные алгоритмы производят движение только в направлении локального минимума. В най­денной точке экстремума функция может иметь значение, являющееся максимальным или минимальным только для небольшой области про­странства.
В ряде задач требуется найти глобальный экстремум, т. е. наибольшее или наименьшее значение функции y = f(x1, x2, …, xi, …, xN) в некоторой замкнутой, ограниченной области D. При этом считается, что функция в этой области непрерывна и обязательно имеет экстремумы. Как и ранее функция имеет экстремумы в критических точках, лежащих внутри облас­ти D или на границах области.
Для того чтобы найти глобальный экстремум функции в некоторой замкнутой области D, следует найти все ее локальные экстремумы (мини­мумы или максимумы в зависимости от задачи). Если решается задача по­иска глобального максимума, из найденных экстремумов выбирается тот, в котором функция имеет максимальное значение. При поиске глобально-
42
го минимума выбирается локальный экстремум с минимальным значени­ем функции.
Для поиска локальных максимумов и минимумов дифференцируемой функции могут быть использованы любые алгоритмы поиска локальных экстремумов. Задача нахождения экстремума функции на границах облас­ти D сводится к нахождению максимума или минимума функции одной переменной.
Большинство задач, требующих нахождения глобального экстремума, являются не формализуемыми, т. е. задачами, для которых разработка чет­кого алгоритма решения затруднена. Так, например, экстремум функции не может быть найден путем полного перебора возможных вариантов. Данная процедура может быть связана с большими вычислительными за­тратами или время, отводимое на определение экстремума, существенно ограничено. В связи с этим в большинстве случаев детерминированные методы оптимизации не могут быть применены для поиска глобальных экстремумов.
Наиболее широкую известность получили следующие методы дис­кретной оптимизации: методы случайного поиска, метод ветвей и границ [1], эволюционные вычисления [25], искусственные нейронные сети [26] и др. Одним из вариантов решения задачи глобальной оптимизации являет­ся использование численных методов, основанных на приведении исход­ной многомерной задачи к набору связанных одномерных задач [27]. Ре­шение задачи оптимизации также может быть получено с использованием интеллектуальных экспертных методов, т. е. на основе интеллектуального анализа данных или путем создания экспертных систем [28, 29], систем поддержки принятия решений [30] и др.
Методы случайного поиска отличаются от детерминированных мето­дов глобальной оптимизации намеренным введением случайности в алго­ритмы поиска [1]. Случайный поиск обладает высокой эффективностью в случае, если пространство имеет большую размерность. При этом целевая функция может быть задана произвольно и иметь ограничения.
В настоящее время используется несколько разновидностей случай­ного поиска. В частности, случайный поиск экстремума функции может быть ненаправленным или направленным [31].
43
x
При ненаправленном случайном поиске для нахождения экстремума
формируется множество вариантов случайных решений из области допус-
тимых значений аргументов функции. Для каждого случайного решения
вычисляются значения функции и далее сравниваются между собой. Ре-
зультатом выполнения алгоритмов ненаправленного случайного поиска
является выбор одного из случайных решений, которое наиболее прибли-
жено к экстремуму. К методам ненаправленного случайного поиска, в ча-
стности, относится метод статистических испытаний (метод Монте-
Карло).
Направленный поиск глобального экстремума может осуществляться
на основе анализа значений функции, вычисленных на предыдущих ша-
гах. Для выполнения направленного поиска также могут быть применены
алгоритмы с самообучением [26]. Так, например, самообучение может
быть использовано для определения оптимального маршрута поиска экс-
тремума. Поисковый алгоритм может производить отбор и хранение в па-
мяти нескольких наиболее удачных маршрутов поиска. В процессе поиска
алгоритм выбирает маршрут поиска экстремума случайным образом, при
этом вероятность выбора удачного маршрута больше, чем вероятность
выбора неудачного или еще не пройденного маршрута.
Одним из наиболее часто используемых ненаправленных методов
случайного поиска глобального экстремума функций является метод мультистарта [1]. Суть метода состоит в том, что из множества X∈D точек
пространства по определенному правилу выбираются некоторые подмно-
жества, состоящие из конечного числа точек. Для каждого выбранного
подмножества Z
∈X определяется начальная (стартовая) точка, из которой
i
производится движение к ближайшему локальному экстремуму. Значения
найденных локальных экстремумов сравниваются между собой и, в зави-
симости от поставленной задачи, выбирается максимальный или мини-
мальный экстремум.
Пусть имеется некоторая функция y = f(x1, x2, …, xi, …, xN) = f(x),
∈X, зависящая от N аргументов. Необходимо найти глобальный мини-
мум данной функции. Введем обозначение xq = (x
q
, x
1
, …, x
2
q
, …, x
i
q
) для
N
q
некоторой точки c порядковым номером q в N-мерном пространстве, т. е.
44
)y(miny
*
q
**
=
)y(minargx
*
q
q
**
=
q
x
∈X. На начальном этапе следует определить некоторое число S старто-
вых точек xq, q = 1, 2, … S, из которых будет выполняться спуск. Движе-
ние к минимуму из начальных точек может осуществляться любым ло-
кальным методом оптимизации.
В общем случае определение координат стартовых точек может быть
выполнено в соответствии с различными правилами. Правила выбора на-
чальных точек определяют модификацию метода мультистарта.
Наиболее простым правилом выбора начальных точек является алго-
ритм перебора точек пространства (сканирования). Его сущность заклю-
чается в том, что по каждой независимой переменной выбирается множе-
ство значений с некоторым постоянным шагом. Для исследуемой области
пространства формируется «сетка» значений, в узлах которой будет про-
изводиться поиск локальных экстремумов [32]. Для уменьшения количе-
ства вычислений могут быть использованы различные модификации алго-
ритма перебора. Кроме того, известны адаптивные алгоритмы определе-
ния начальных точек поиска экстремумов [31].
Вычисленные значения локальных минимумов y
*
сравниваются меж-
q
ду собой и в качестве глобального минимума выбирается наименьший из
найденных локальных минимумов, т. е.
.
Координаты глобального минимума определяются в соответствии с
выражением
.
С увеличением количества подмножеств вероятность нахождения
глобального экстремума стремится к единице. При конечном числе вы-
бранных подобластей есть вероятность пропуска глобального экстремума.
Пример графика некоторой функции y = f(x1, x2), имеющей глобальный
экстремум, показан на рис. 3.1.
45
Рис. 3.1
Метод мультистарта представляет собой обобщенный подход к реше­нию задачи глобальной оптимизации. Большая часть эффективных мето­дов глобальной оптимизации основана на идее запуска алгоритмов ло­кального поиска из множества точек, равномерно распределенных в про­странстве X.
Методы случайного поиска глобальных экстремумов многомерных функций дают высокую вероятность достижения поставленной цели.
Ход работы
1. Запустить программную среду Matlab, установить текущую папку «X:\…\Komplex_MO\Lab3», где X – условное обозначение литеры диска. Поле для установки текущей папки показано на рис. 3.2;
Рис. 3.2
46
2. В текстовом редакторе среды Matlab создать новый файл и сохра­нить его под именем f31.m на жестком диске ПК в папке X:\…\Komplex_MO\ Lab3;
3. В файле f31.m поместить заголовок файла-функции:
function z= f31(x1, x2)
4. В файле f31.m после имеющегося кода поместить запись выраже- ния анализируемой функции (согласно варианту заданий, указанному преподавателем):
z = x1.^2 - 10*cos(2*pi*x1*0.25) + ... x2.^2 - 10*cos(2*pi*x2*0.25) + 20;
5. Cохранить изменения файла f31.m;
6. В текстовом редакторе среды Matlab создать новый файл и сохра-
нить его под именем grad_minimum_31.m на жестком диске ПК в папке
X:\…\Komplex_MO\Lab3;
7. В файле grad_minimum_31.m поместить заголовок файла-функции:
function[z,x1_res,x2_res]=grad_minimum_31(x1_0,x2_0,eps)
%-------------------------------------------­% grad_minimum_31(x1_0, x2_0, eps) - функция для
% нахождения минимума функции f31(x1, x2). %%% % Функция принимает координаты начальной % точки поиска x1_0, x2_0, а также значение % погрешности eps. Для поиска % используется градиентный метод % с постоянным шагом.
8. В файле grad_minimum_31.m поместить следующий программный код (после имеющегося кода):
%-------------------------------------------­% Инициализация g = -0.0625; % постоянная шага %%%
h = 0.25; % шаг для оценки градиента n = 1; % Номер итерации
47
nmax = 1000; % Предельное число шагов, % задается для предотвращения зацикливания. % Массивы для хранения промежуточных координат x1trace = [x1_0]; x2trace = [x2_0];
9. В файле grad_minimum_31.m поместить следующий программный
код (после имеющегося кода):
%-------------------------------------------­% Выполнение итераций i = 2; while n < nmax % Спуск по обеим координатам сразу % Вычисление оценки градиента gr1 = (f31(x1_0+h, x2_0) - ... f31(x1_0-h, x2_0))/(2*h); gr2 = (f31(x1_0, x2_0+h) - ... f31(x1_0, x2_0-h))/(2*h);
x1_0 = x1_0 + g*gr1; x2_0 = x2_0 + g*gr2;
% Сохранение координат x1trace(i) = x1_0; x2trace(i) = x2_0; i = i + 1;
% Проверка условия останова if sqrt(gr1^2 + gr2^2) <= eps; break; % Выход из цикла end n = n + 1; end x1_res = x1_0; x2_res = x2_0;
z=f31(x1_res, x2_res);
%-------------------------------------------­% Вывод результатов disp( sprintf('%s %.5g', 'x1_res=', x1_res) ); disp( sprintf('%s %.5g', 'x2_res=', x2_res) ); disp( sprintf('%s %d', 'n=', n) );
48
10. Cохранить изменения файла grad_minimum_31.m;
11. В текстовом редакторе среды Matlab создать новый файл и сохра-
нить его под именем g_opt_31.m на жестком диске ПК в папке
X:\…\Komplex_MO\Lab3;
12. В файле g_opt_31.m поместить следующий программный код:
clear all %--------------------------------------------
% Формирование множества стартовых % точек (случайные значения координат). % Формируется 100 стартовых точек.
xx1 = rand(1, 10); xx2 = rand(1, 10);
xx1 = -5+10*xx1; xx2 = -5+10*xx2;
13. В файле g_opt_31.m поместить программный код (после имеюще­гося кода):
%--------------------------------------------
% Производим поиск из первой стартовой точки, % находим значения первого локального минимума. % На начальном этапе глобальным минимумом считается % первый найденный локальный минимум. % min_1 - переменная для хранения значения функции % в точке глобального минимума
[z_array(1, 1), xxx1(1, 1), ...
xxx2(1, 1)] = grad_minimum_31(xx1(1), xx2(1), 0.01); min_1=z_array(1, 1); x1_res=xxx1(1, 1); x2_res=xxx2(1, 1);
14. В файле g_opt_31.m поместить следующий программный код (по­сле имеющегося кода):
%--------------------------------------------
% Поочередно производим поиск из каждой стартовой точки, % находим значения локальных минимумов.
49
% Вычисленные значения локальных минимумов сравниваются % между собой. В качестве глобального минимума % выбирается наименьший из найденных локальных минимумов
for i=1:10 for j=1:10 [z_array(i, j), xxx1(i, j), ... xxx2(i, j)]=grad_minimum_31(xx1(i), xx2(j), 0.01); if(z_array(i, j)<min_1) min_1=z_array(i, j); x1_res=xxx1(i, j); x2_res=xxx2(i, j); end end end
%--------------------------------------------
% Вывод результатов disp( sprintf('Результаты поиска глоб. минимума: '));
disp( sprintf('%s %.5g', 'x1_res=', x1_res) ); disp( sprintf('%s %.5g', 'x2_res=', x2_res) ); disp( sprintf('%s %.5g', 'z_res=', min_1) );
%--------------------------------------------
% Построение графика % Значение шага сетки при построении графика поверхности
surf_step = 0.2; xx1 = -5:surf_step:5; xx2 = -5:surf_step:5; [xx1_s, xx2_s] = meshgrid(xx1, xx2); zz__s=f31(xx1_s, xx2_s); surf(xx1_s, xx2_s, zz__s); xlabel('x1'); ylabel('x2'); zlabel('f31(x1, x2)');
15. Cохранить изменения файла g_opt_31.m;
16. Выполнить поиск глобального минимума функции путем запуска
файла-сценария g_opt_31.m. Для этого в главном окне среды Matlab следует выполнить следующую команду:

>> g_opt_31

50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]