Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы оптимизации в радиотехнических системах. Практикум
.pdf
1
k
1
1
k
1
gx
:
x f∆⋅+=
+
2
k
2
1k
2
g
x:x f∆
⋅
+=
+
i
k
i
1k
i
gx:x f∆⋅+=
+
N
k
N
1k
N
g
x:x f∆
⋅
+=
+
)x,...,x,...,x,x(x
k
N
k
i
k
2
k
1
k
=
α
h)(vh)(vh)f(vh)f(v −−+⋅≤−−+ L
Θ
f(v)
f(v+h)
f(v–h)
f(x),
a(x),
j(x)
Точка, для которой оценивается
скорость изменения функции
v–h
v
v+h
x
0
Θ
a(x)
j(x)
f(x)
При использовании оценки градиента изменение координат точек
производится по следующему правилу:
,
, … ,
, … ,
.
Таким образом, вектор текущих значений координат на k-й итерации
может быть обозначен
. На рис. 2.5 представлен
пример спуска по поверхности y = f(x1, x2) в ходе выполнения итераций.
В зависимости от способа выбора значения постоянной шага могут
быть выделены различные разновидности градиентного метода. В частности, длина шага может быть постоянной или зависеть от длины вектора
градиента [17]. В настоящее время выделяются методы наискорейшего
спуска [18], метод Ньютона, методы покоординатного спуска с использованием градиента и другие [18]. Наиболее простым является использование постоянного значения шага g.
Одним из ключевых условий, определяющих сходимость градиентных методов, является условие Липшица [18]. Рассмотрим функцию одной переменной y = f(x), график которой представлен на рис. 2.6.
Рис. 2.6
Для точки x = v выполняется условие
, (2.1)
31

h2h)f(v
h)f(v ⋅⋅≤−−+ L
srf(s)f(r) −⋅≤
− L
⋅
sr −
sr(s)f(r)f −⋅≤
′
−
′
L
где L – константа Липшица. В общем случае 0 ≤ α ≤ 1, при α = 1 неравен-
ство (2.1) называется условием Липшица [2 ]:
. (2.2)
Таким образом, скорость изменения функции на рассмотренном интервале ограничена значением константы Липшица, т. е. скорость изменения функции является конечной.
В соответствии с рис. 2.6 функция y = f(x) возрастает не быстрее чем
прямая a(x) с угловым коэффициентом, равным L (L > 0). Аналогично
функция y = f(x) убывает не быстрее чем прямая j(x) с угловым коэффициентом, равным L (L < 0). Угловой коэффициент прямой численно равен
тангенсу угла между положительным направлением оси абсцисс и данной
прямой линией [2]. Прямой a(x) на рис. 2.4 соответствуют значения L > 0,
0 ≤ Θ < π/2, прямой j(x) – значения L < 0, π/2 < Θ < π. Таким образом, условие Липшица будет выполняться для любой точки кривой y = f(x) на
рис. 2.6.
Выполнение условия Липшица также говорит об ограниченности по
модулю угловых коэффициентов всех хорд графика функции на некотором участке [2].
Для функции N переменных y = f(x1, x2, …, xi, …, xN) = f(x) условие
Липшица (2.2) может быть записано в виде [19]
,
где
стве. В данном случае
– евклидова норма; r и s – некоторые точки в N-мерном простран-
– евклидово расстояние между точками r и s.
Для градиентных методов могут быть определены условия сходимости, т. е. условия, при которых с каждой последующей итерацией будет
производиться приближение к минимуму [19]. Пусть функция y = f(x) является дифференцируемой, ограниченной снизу, т. е. f(x) ≥ f(x*) > –∞,
и для ее градиента выполняется условие Липшица
.
32

0
)x
(
f
k
→
′
∞
→k
)xf()xf(
k1k≤+
1
k1k
εxx <−
+
( ) ( )
2
k1k
εxfxf <−
+
( )
3
k
εx'f <
Длина шага постоянна и удовлетворяет условию 0 < g < 2/L. Тогда
метод будет сходиться при любом выборе начальной точки [19], т. е.
при
и
.
При использовании градиентных методов наиболее часто применяют
следующие критерии окончания вычислений [18]:
, (2.3)
, (2.4)
, (2.5)
где ε1, ε2, ε
– заданные положительные числа. При выполнении условий
3
критерия окончания вычислений итерационный процесс метода прекращается, и в качестве приближенного решения x* принимается текущее
значение вектора x. Во многих случаях используются сочетания критериев (2.3), (2.4) или даже задается требование выполнения всех трех условий
(2.3)–(2.5). Для формирования условий окончания вычислений могут быть
использованы другие критерии [2, стр. 270], однако на сегодняшний день
нет четко определенных критериев, позволяющих достигать требуемой
погрешности решения задачи оптимизации функции. Эффективность
применяемого критерия в значительной мере зависит от класса решаемой
задачи.
Градиентные методы оптимизации широко применяются в технических системах обучения и принятия решения [20]. В частности, градиентные методы используются для обучения нейронных сетей, систем с нечеткой (fuzzy) логикой и других адаптивных систем. Для выполнения процесса обучения важную роль играет качество обучающей выборки, т. е. качество примеров, на которых обучается данная система [20, 21, 22]. Во многих случаях системы машинного обучения производят предварительную
обработку обучающей выборки с целью оценки максимальной скорости
изменения данных. Обучающая выборка анализируется и по результатам
33

НЕТ
Начало
ДА
Конец
k:=1
Ввод предельного количества
1
k
1
1k
1
x
y
gx:x
∂
∂
⋅+=
+
2
k
2
1k
2
x
y
gx:x
∂
∂
⋅+=
+
1
k1k
εxx <−
+
k:=k+1
Ввод значений
1
2
анализа производится оценивание константы Липшица [23, 24]. Далее полученная оценка может быть использована для повышения качества обучения технической системы, в частности, для выбора требуемого значения
постоянной шага g градиентных методов.
В ходе поиска экстремума функции градиентными методами значение
модуля антиградиента может существенно изменяться. В большинстве
случаев на начальном этапе вычислений модуль антиградиента принимает
большие значения, а по мере приближения к точке минимума его значения
уменьшаются. В результате в окрестности точки минимума градиентный
метод становится чувствительным к погрешности выполняемых вычислений. Таким образом, вблизи точки минимума эффективность градиентного метода резко снижается.
Схема алгоритма оптимизации функции y = f(x1, x2) градиентным методом с постоянным шагом представлена на рис. 2.7.
1
x
, x
1
, g, ε
итераций kmax
,
Рис. 2.7
34

Ход работы
1. Запустить программную среду Matlab, установить текущую папку
«X:\…\Komplex_MO\Lab2», где X – условное обозначение литеры диска.
Поле для установки текущей папки показано на рис. 2.8;
Рис. 2.8
2. В текстовом редакторе среды Matlab создать новый файл и сохранить его под именем f21.m на жестком диске ПК в папке
X:\…\Komplex_MO\ Lab2;
3. В файле f21.m поместить заголовок файла-функции:
function y = f21(x1, x2)
4. В файле f21.m после имеющегося кода поместить запись выраже-
ния анализируемой функции (согласно варианту заданий, указанному
преподавателем):
y = (-10)*x1.^2 + (-12)*x2.^2 + x1.*x2;
5. Cохранить изменения файла f21.m;
6. В текстовом редакторе среды Matlab создать новый файл и сохра-
нить его под именем p_deriv_x1_21.m на жестком диске ПК в папке
X:\…\Komplex_MO\ Lab2;
7. В файле p_deriv_x1_21.m поместить заголовок файла-функции:
function gr1 = p_deriv_x1_21(x1, x2)
35

8. В файле p_deriv_x1_21.m после имеющегося кода поместить запись
выражения анализируемой функции (согласно варианту заданий, указанному преподавателем):
gr1 = x2 - 20*x1;
9. Cохранить изменения файла p_deriv_x1_21.m;
10. В текстовом редакторе среды Matlab создать новый файл и сохра-
нить его под именем p_deriv_x2_21.m на жестком диске ПК в папке
X:\…\Komplex_MO\ Lab2;
11. В файле p_deriv_x2_21.m поместить заголовок файла-функции:
function gr2 = p_deriv_x2_21(x1, x2)
12. В файле p_deriv_x2_21.m после имеющегося кода поместить запись выражения анализируемой функции (согласно варианту заданий,
указанному преподавателем):
gr2 = x1 - 24*x2;
13. Cохранить изменения файла p_deriv_x2_21.m;
14. В текстовом редакторе среды Matlab создать новый файл и сохра-
нить его под именем grad_minimum.m на жестком диске ПК в папке
X:\…\Komplex_MO\Lab2;
15. В файле grad_minimum.m поместить заголовок файла-функции:
function grad_minimum(x1_0, x2_0, eps)
%-------------------------------------------% grad_minimum(x1_0, x2_0, eps) - функция для
% нахождения минимума функции f21(x1, x2). %%%
% Функция принимает координаты начальной
% точки поиска x1_0, x2_0, а также значение
% погрешности eps. Для поиска
% используется градиентный метод
% с постоянным шагом. В вычислениях
% также используются выражения для частных
% производных.
% p_deriv_x1(x1, x2) - частная производная
36

% функции f21(x1, x2) по переменной x1,
% p_deriv_x2(x1, x2) - частная производная
% функции f21(x1, x2) по переменной x2.
% Функции f21(x1, x2), p_deriv_x1(x1, x2),
% p_deriv_x2(x1, x2) задаются в виде M-файлов,
% которые должны находиться в текущей папке.
%--------------------------------------------
% Построение графика производится в
% следующей области:
% x1: от -20 до 20;
% x2: от -20 до 20;
16. В файле grad_minimum.m поместить следующий программный код
(после имеющегося кода):
%--------------------------------------------
% Инициализация
g = 0.02; % постоянная шага %%%
k = 1; % Количество итераций
kmax = 100; % Предельное число шагов,
% задается для предотвращения зацикливания.
% Массивы для хранения промежуточных координат
x1trace = [x1_0];
x2trace = [x2_0];
17. В файле grad_minimum.m поместить следующий программный код
(после имеющегося кода):
%-------------------------------------------% Выполнение итераций
i = 2;
while k < kmax
% Спуск по обеим координатам сразу
gr1 = p_deriv_x1_21(x1_0, x2_0);
gr2 = p_deriv_x2_21(x1_0, x2_0);
x1_0 = x1_0 + g*gr1;
x2_0 = x2_0 + g*gr2;
% Сохранение координат
x1trace(i) = x1_0;
x2trace(i) = x2_0;
i = i + 1;
37

% Проверка условия останова
if sqrt(gr1^2 + gr2^2) <= eps;
break; % Выход из цикла в случае выполнения условия
end
k = k + 1;
end
%--------------------------------------------
% Построение графика
% Поверхность
figure(1);
xx1 = -20:1:20;
xx2 = -20:1:20;
[xx1_s, xx2_s] = meshgrid(xx1, xx2);
yy__s = f21(xx1_s, xx2_s);
surf(xx1_s, xx2_s, yy__s);
xlabel('x1'); ylabel('x2');
zlabel('f21(x1, x2)');
% Линии уровня
figure(2);
xx1 = -20:0.1:20;
xx2 = -20:0.1:20;
[xx1_c, xx2_c] = meshgrid(xx1, xx2);
yy__c = f21(xx1_c, xx2_c);
[C, h] = contour(xx1_c, xx2_c, yy__c);
xlabel('x1'); ylabel('x2');
% Отображение меток на линиях уровня
clabel(C, h);
hold on;
plot(x1trace, x2trace, '-+');
% Вывод начальной точки на график
text(x1trace(1) + 0.2, x2trace(1) + 0.5, 'M0');
% Вывод решения на график
text(x1_0 + 2, x2_0, ...
strvcat(['x1* = ' num2str(x1_0)], ...
['x2* = ' num2str(x2_0)], ...
['k = ' num2str(k)]));
hold off;
38

18. В файле grad_minimum.m поместить следующий программный код
(после имеющегося кода):
%-------------------------------------------% Вывод результатов
disp( sprintf('%s %.5g', 'x1*=', x1_0) );
disp( sprintf('%s %.5g', 'x2*=', x2_0) );
disp( sprintf('%s %d', 'k=', k) );
19. Cохранить изменения файла grad_minimum.m;
20. Выполнить поиск минимума функции y = f(x1, x2) градиентным
методом. Значения координат начальных точек необходимо выбрать из
диапазона [–20, 20]. Например, для запуска процесса поиска из начальной
точки с координатами [10, –15] в главном окне среды Matlab следует выполнить следующую команду:
>> grad_minimum(10, -15, 0.01)
Поиск минимума повторить для трех различных начальных точек из
указанного диапазона.
21. В текстовом редакторе среды Matlab создать новый файл и сохра-
нить его под именем grad_maximum.m на жестком диске ПК в папке
X:\…\Komplex_MO\Lab2;
22. В файле grad_maximum.m поместить код файла-функции, выпол-
няющего поиск максимума методом (на основе алгоритма) золотого сечения;
23. Cохранить изменения файла grad_maximum.m;
24. Выполнить поиск максимума функции y = f(x1, x2) градиентным
методом. Значения координат начальных точек необходимо выбрать из
диапазона [–20, 20]. Например, для запуска процесса поиска из начальной
точки с координатами [10, –15] в главном окне среды Matlab следует выполнить следующую команду:
>> grad_maximum(10, -15, 0.01)
39

№
Аналитические выражения
1
y = –10∙(x1)2 –12∙ (x2)2 + x1∙ x
∂y/∂x1 = x2 – 20∙x1;
0,01
2
y = –(2∙(x1)2 + 1,05∙(x1)4 +
∂y/∂x1 = –(x1)5 – 4,2∙(x1)3 –
0,01
3
y = –2∙(x1)2 –(x2)2 +
∂y/∂x1 = 2∙x2 – 8∙x1 + 80;
0,01
4
y = (x1)2 –(x2)
2
∂y/∂x1 = 2∙x1;
0,01
Поиск максимума повторить для трех различных начальных точек из
указанного диапазона.
Варианты заданий приведены в таблице.
Варианты заданий
Таблица
вари-
анта
Аналитическое выражение
функции
+ (x1)6 /6 + x1∙ x2 + (x2)2);
+2∙x1∙ x2 – 2∙(x1 – 20)2 –
– 20)2;
– (x
2
частных производных
функции
2
∂y/∂x2 = x1 – 24∙x2
– 4∙x1 – x2;
∂y/∂x
∂y/∂x2 = –4∙x2 + 2∙x1 + 40;
∂y/∂x2 = –2∙x2
= –2∙x2 – x1
2
Погреш-
ность
Контрольные вопросы
1. Приведите последовательность команд на языке Matlab, необходимую для реализации градиентного метода с постоянным шагом. Поясните назначение каждой приведенной команды.
2. В чем заключается сущность градиентных методов оптимизации?
Что означает термин «антиградиент»?
3. Какие преимущества имеют градиентные методы оптимизации по
сравнению с методами прямого поиска?
4. Что такое условная оптимизация функции?
5. В чем заключается сущность метода Гаусса–Зейделя? Перечислите
основные достоинства и недостатки метода Гаусса–Зейделя.
6. Приведите пример оценки значения градиента функции несколь-
ких переменных.
7. В чем заключается сущность условия Липшица?
8. Как устанавливается значение постоянной шага градиентного ме-
тода? Какие правила выбора значения постоянной шага вам известны?
9. Что означает понятие сходимости градиентных методов?
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
