Главная страница

Штрафные функции


Скачать 1.57 Mb.
НазваниеШтрафные функции
Дата11.12.2021
Размер1.57 Mb.
Формат файлаdocx
Имя файлаlab6.docx
ТипОтчет
#300171

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра КСУ

отчет

по лабораторной работе №6

по дисциплине «Теория оптимального управления»

Тема: Штрафные функции

Вариант 2


Студент гр.







Преподаватель








Санкт-Петербург

2021

Цель работы: применение метода штрафных функции для минимизации функции двух переменных в заданной области.

Вводные: неунимодальная функция – Химмельблау:

f(x,y)=(x2+y-11)2+(x+y2-7)2

Ограничения по сетке X0Y: [-20:0.5:20]

Задача:

  1. Построить график функции и её линии уровня

  2. Предложить штрафную функцию и ограничения для штрафа основной функции

  3. Исказить функцию при помощи штрафов

  4. Найти минимум при помощи стандартной функции fminsearch

  5. Построить график новой функции и её линии уровня

  6. Отобразить начальную - красным и конечную – синим цветами точки

  7. Прослеживать изменения минимума, изменяя коэффициент штрафа, сделать выводы о приемлемом коэффициенте.


Ход работы:

1) Построить график функции и линии уровня

Код программы:

m=0.5; L=-20; R=20; %шаг, границы - левая и правая

[X,Y]=meshgrid(L:m:R);

F =(X.^2+Y-11).^2+(X+Y.^2-7).^2; % исследуемая ф-ия Химмельблау(тоже менять в fun6)

figure(1) %

mesh(X,Y,F); % её 3д график

figure (2) %

c ontour(X,Y,F, 30,'Showtext','on') % её линии уровнией



Рис. 1. График поверхности функции Химмельблау и её линии уровня
2) Предложить штрафную функцию

Код программы отдельным скриптом:

function f=fun6(arg)

X=arg(1);

Y=arg(2);

F =(X.^2+Y-11).^2+(X+Y.^2-7).^2;

alphax = 1; %штрафной коэ-нт % ш

ax = -1; % т

bx = 2; % а

PhiX =(zeros(size(X))); % ф

i1 = find(X>bx); % н

PhiX(i1) = (alphax*(X(i1)-bx).^2); % а

i2 = find(X
PhiX(i2) = (alphax*(X(i2)-ax).^2); %

f=(F+PhiX); % функция

end
3)Найти минимум

Код программы:

a=L:m:R; % ограничения

new=fun6(a); % штрафная функция для оптимизации

x0=[0,0]; % нач-ая точка

[xe,extr]=fminsearch(@fun6, x0) % координаты и сам минимум

Результат:

xe =

2.9684 2.0183

extr =

0.9686

alphax =

1
4)Построить графики вместе с точками

Код программы:

alphax = 1 %штрафной коэ-нт % ш

ax = -1; %также менять его % т

bx = 2; %в fun6 % р

PhiX =(zeros(size(X))); % а

i1 = find(X>bx); % ф

PhiX(i1) = (alphax*(X(i1)-bx).^2); % н

i2 = find(X
PhiX(i2) = (alphax*(X(i2)-ax).^2); % я

f=(F+PhiX); % функция для

[A,B]=meshgrid(L:m:R); % построения графиков

figure(3) %

mesh(A,B,f); % график новой ф-ия

hold on;

plot(x0(1),x0(2),'*','color','red','MarkerSize', 10);

plot(xe(1),xe(2),'*','color','blue','MarkerSize', 10);

figure (4) %

contour(A,B,f, 30,'Showtext','on') % её линии уровней

hold on;

plot(x0(1),x0(2),'*','color','red','MarkerSize', 10);

plot(xe(1),xe(2),'*','color','blue','MarkerSize', 10);




Рис. 2. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 1
5) Изменяем коэффициент штрафа

alphax

еxtr - минимум

xe – координаты: X Y

1

0.9686

2.9684 2.0183

10

7.4044

2.7310 2.1436

25

12.8092

2.4869 2.2541

50

16.4552

2.2972 2.3304

100

18.8763

2.1623 2.3804

500

21.1090

2.0343 2.4250

1000

21.4042

2.0172 2.4307



Рис. 3. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 10


Рис. 4. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 25



Рис. 5. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 50



Рис. 6. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 100


Рис. 7. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 500



Рис. 8. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 1000

alphax

еxtr - минимум

xe – координаты: X Y

0

1.4333e-08

3.0000 2.0000

-1

-1.0328

3.0327 1.9805

-10

-14.0100

3.3753 1.7354

-25

-101.7393

4.4425 -2.0472

-50

-313.1677

5.3459 -2.2497

-100

-1.2012e+03

6.9861 -2.6030

-500

-3.9866e+04

15.2145 -4.1928

-1000

-1.7961e+05

21.6597 -5.2985





Рис. 9. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = 0



Рис. 10. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = -1



Рис. 11. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = -10



Рис. 12. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = -25



Рис. 13. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = -50



Рис. 13. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = -100




Рис. 14. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = -500



Рис. 15. График искажённой поверхности функции и её линии уровня, вместе с начальной точкой – красная и минимумом – синяя при коэффициенте штрафа alphax = -1000
Выводы:

Метод штрафных функций основан на искажении основной функции путём суммирования со штрафной функцией, при нарушении основной заданных ограничений. Величину штрафа определяет штрафной коэффициент. Чем больше он по модулю, тем более заметными проявляются искажения поверхности функции. При увеличении коэффициента (alphax > 0) поверхность из эллиптического параболоида искривляется в сторону параболического цилиндра. Значение минимума возрастает, минимум сдвигается влево-вверх. При уменьшении (alphax < 0) поверхность трансформируется в гиперболический параболоид. Значение минимума заметно уменьшается, сам он сдвигается вправо-вниз и, при значении чуть меньшем alphax = -1000 выходит за пределы сетки X0Y.


написать администратору сайта