Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Mod&Opt_4.doc
Скачиваний:
7
Добавлен:
30.11.2018
Размер:
432.64 Кб
Скачать

3. Порядок виконання лабораторної роботи

  1. Засобами MATLAB побудувати графік поверхні заданої функції.

  2. Для заданої функції написати програму реалізації методу Нелдера-Міда для пошуку мінімум в середовищі MATLAB.

  3. Порівняти отримане значення мінімуму із значенням, отриманим із застосуванням функцій MATLAB fmins (fminsearch).

  4. Зробити висновки.

  5. Оформити звіт до лабораторної роботи.

4. Зміст звіту

  1. Тема роботи.

  2. Завдання та заданий критерій.

  3. Графік поверхні критерію в просторі параметрів оптимізації

  4. Блок-схема алгоритму пошуку мінімуму за методом Нелдера-Міда.

  5. Програма пошуку мінімуму за методом Нелдера-Міда, а також із застосуванням функції fmins (fminsearch).

  6. Порівняння отриманого значення мінімуму із значенням, отриманим з використанням функції fmins (fminsearch).

  7. Висновки.

5. Варіанти завдань

№ варіанту

Критерій

Межі параметрів х,у

1

х[-300;300], у[-15;25]

2

х[-8;8], у[-6;6]

3

х[-10;10], у[-10;20]

4

х[-10;10], у[-10;10]

5

х[-10;10], у[-10;10]

6

х[-3;3], у[-3;0]

7

х[-4;0], у[-3;3]

8

х[-100;100], у[-10;10]

9

х[-4;8], у[-100;100]

10

х[-70;70], у[-10;10]

11

х[-20;10], у[-10;20]

12

х[-10;10], у[-50;50]

13

х[-300;300], у[-10;10]

14

х[-15;10], у[-10;10]

Література

  1. Уайлд Д.Д. Методы поиска экстремума. М.: Наука, 1967.

  2. Потемкин В.Г. Система MATLAB 5. Справочное пособие. М.: ДИАЛОГ-

Додаток

Приклад оформлення звіту

Тема: Безумовна багатопараметрична оптимізація. Пошук екстремуму за симплексом. Метод Нелдера-Міда.

Завдання:

Побудувати графік поверхні та знайти мінімум критерію за методом Нелдера-Міда та за допомогою функції fmins (fminsearch) в середовищі MATLAB.

Заданий критерій:

Виконання роботи

Рисунок 1. Графік поверхні та еквіпотенціальні лінії заданого критерію

Рисунок 2. Блок-схема алгоритму пошуку мінімуму за методом Нелдера-Міда

Програма пошуку мінімуму за методом Нелдера-Міда, а також із застосуванням функції fmins:

%lab4

clear,clc

% Побудова поверхні заданого критерію

[x,y]=meshgrid([-3:0.1:2],[-2:0.1:2]); z=l4f(x,y);

figure('name','Nelder-Mid','numbertitle','off','menubar','none', 'color','w');

h=surfc(x,y,z);set(h,'facecolor',[1 1 1],'edgecolor',[0 0 0])

xlabel('Parametr 1 (x)');ylabel('Parametr 2 (y)');zlabel('Kryteriy (f(x,y))');

hold on,

clear all

pause;

% Пошук мінімуму за методом Нелдера-Міда

disp('Пошук мінімуму за методом Нелдера-Міда')

l=1; %Початкова довжина ребра Симплекса

disp('Точність'), eps=0.001

al=1; be=0.5; ga=2; s1=0.9659; s2=0.2588;

x(1)=-3; y(1)=0; z(1)=l4f(x(1),y(1));

x(2)=x(1)+l*s2; y(2)=y(1)+l*s1; z(2)=l4f(x(2),y(2));

x(3)=x(1)+l*s1; y(3)=y(1)+l*s2; z(3)=l4f(x(3),y(3)); n=3;

figure(1),plot3(x,y,[0 0 0],'ok','markerfacecolor','k','markersize',3)

pause

while sqrt(sum((z-sum(z)/3).^2))/3>eps

[zs,j]=sort(z);

xl=x(j(1)); yl=y(j(1)); zl=zs(1);

xg=x(j(2)); yg=y(j(2)); zg=zs(2);

xh=x(j(3)); yh=y(j(3)); zh=zs(3);

xo=(xl+xg)/2; yo=(yl+yg)/2;

xr=(1+al)*xo-al*xh; yr=(1+al)*yo-al*yh; zr=l4f(xr,yr); n=n+1;

figure(1),plot3(xr,yr,0,'ok','markerfacecolor','k','markersize',3)

if zr<zl

xe=(1-ga)*xo+ga*xr; ye=(1-ga)*yo+ga*yr; ze=l4f(xe,ye); n=n+1;

figure(1),plot3(xe,ye,0,'ok','markerfacecolor','k','markersize',3)

if ze<zl, xh=xe; yh=ye; zh=ze;

else xh=xr; yh=yr; zh=zr;

end

else

if zr>zg

if zr<zh, xh=xr; yh=yr; zh=zr;

end

xc=(1-be)*xo+be*xh; yc=(1-be)*yo+be*yh; zc=l4f(xc,yc); n=n+1;

figure(1),plot3(xc,yc,0,'ok','markerfacecolor','k','markersize',3)

if zc>zh

xg=(xg+xl)/2; yg=(yg+yl)/2; zg=l4f(xg,yg);

xh=(xh+xl)/2; yh=(yh+yl)/2; zh=l4f(xh,yh); n=n+2;

figure(1),plot3([xg xh],[yg yh],[0 0],'ok','markerfacecolor','k','markersize',3)

else

xh=xc; yh=yc; zh=zc;

end

else

xh=xr; yh=yr; zh=zr;

end

end

x=[xl xg xh]; y=[yl yg yh]; z=[zl zg zh];

pause

end

line([xl xl],[yl yl],[0 2],'color','k');

disp('Мінімум знаходиться в точці з координатами'), x=xl, y=yl, z=zl

disp('Кількість експериментів'), n

% Пошук мінімуму за допомогою функції fmins()

disp('Застосування функції fmins()')

[x,options]=fmins('l4f1',[-3 0],[0 1 eps]);

x_min=x(1)

y_min=x(2)

z_min=l4f(x_min,y_min)

n=options(10)

Підпрограма із заданим критерієм для методу Нелдера-Міда:

function z=l4f(x,y);

z=x.*3.*exp(-x.^2./1.5-y.^2)+2*pi/3;

Підпрограма із заданим критерієм для функції fmins():

function z=l4f1(x);

z=x(1).*3.*exp(-x(1).^2./1.5-x(2).^2)+2*pi/3;

Порівняння отриманого значення мінімуму за методом Нелдера-Міда із значенням мінімуму, отриманим з використанням функції fmins() засобами MATLAB:

Назва методу

Координати мінімуму критерію

Кількість експериментів n

xmin

ymin

fmin

Метод Нелдера-Міда

-0,8423

-0,0396

0,5222

26

Функція fmins()

-0,8721

0,0007

0,5187

33

Висновок:

У результаті виконання цієї лабораторної роботи побудовано блок-схему алгоритму та складено програму пошуку мінімуму за методом Нелдера-Міда. Мінімальне значення критерію за методом Нелдера-Міда для заданої точності ε=0,001 досягається у точці з координатами xmin=-0,8423 ymin=-0,0396 після 26 поставлених експериментів. Мінімальне значення критерію, отримане за допомогою функції fmins, для заданої точності ε=0,001 досягається у точці з координатами xmin=-0,8721; ymin=0,0007 після 33 поставлених експериментів. Абсолютне відхилення значення критерію в точці мінімуму для методу Нелдера-Міда відносно функції fmins становить 0,5222-0,5187=0,0035, а відносне відхилення – (0,5222-0,5187)/0,5187·100%=0,6748%.

14

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