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

2. Формати застосування функцій matlab, в яких закладений метод Нелдера-Міда

Пошук екстремуму критерію в багатопараметричних задачах оптимізації без обмежень на параметри оптимізації в програмному середовищі MATLAB здійснюється, в залежності від версії середовища, із застосуванням функції fmins або fminsearch.

Формати застосування функції fmins:

x=fmins('fun',x0) – знаходить вектор х з координатами мінімуму критерію, заданого у функції fun(х), починаючи з точки початкового наближення х0 за алгоритмом симплексного методу Нелдера-Міда.

x=fmins('fun',x0,options) – знаходить вектор х, враховуючи налаштування, задані у векторі options (ідентифікатор options може мати довільне ім’я). У функції fmins – це вектор із трьох елементів. Налаштування (опції), які можна задавати:

options(1) – надає можливість виведення значень наближення до точки екстремуму.

Якщо options(1)=1 – проміжні результати виводяться,

якщо options(1)=0 – проміжні результати не виводяться.

options(2) – надає можливість задання умови зупинки пошуку за значеннями параметрів х.

options(2)= число, де число – це значення |хк - хк-1|, де к – чергова ітерація наближення до точки екстремуму.

options(3) – надає можливість задання умови зупинки пошуку за значеннями критерію fun(x).

options(3)=число, де число – це значення |fun(хк) - fun(хк-1)|, де к – чергова ітерація наближення до точки екстремуму.

[x,options]=fmins('fun',x0,options) – знаходить вектор х, а також виводить параметри пошуку екстремуму. Параметр, що відповідає кількості проведених експериментів під час пошуку екстремуму – options(10).

Приклад застосуванням функції fmins() для пошуку екстремуму критерію myfun(х) з двома параметрами з точністю по критерію eps=10-3 та виведенням знайдених координат екстремуму і кількості проведених експериментів:

eps=1e-3;

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

x_min=x(1) % перша координата екстремуму

y_min=x(2) % друга координата екстремуму

n=options(10) % кількість проведених експериментів

Формати застосування функції fminsearch

В програмному середовищі MATLAB 5.3 (Release 11) та новіших версіях MATLAB функція fmins замінена функцією fminsearch.

Формати застосування функції fminsearch:

x=fminsearch('fun',x0) – починає з точки нульового наближення х0 та знаходить екстремум х критерію fun(х). х0 може бути число, вектор або матриця.

x=fminsearch('fun',x0,options) – виконує вищевказане із застосуванням опцій, введених у структурі options. Структура options містить такі поля:

Display – можливість виведення експериментів. Значення поля Display:

'off' – не виводити значення експериментів, 'iter' – виводити значення експериментів при кожній ітерації, 'final' – виводити лише значення кінцевого експерименту, 'notify' (за замовчуванням)– виводити результат лише коли функція не збігається.

якщо options(1)=0 – проміжні експерименти не виводяться.

MaxFunEvals – максимальна дозволена кількість експериментів.

MaxIter – максимальна дозволена кількість ітерацій.

TolX – точність вхідних параметрів х, при досягненні якої пошук екстремуму завершується.

[x,fval]=fminsearch('fun',x0,options) – виконує вищевказане та видає fval – значення критерію 'fun' в отриманому розв’язку x.

[x,fval,exitflag]=fminsearch('fun',x0,options) – виконує вищевказане та видає значення exitflag, яке показує умову виходу з ітераційного процесу функції fminsearch().

При exitflag>0 – ітераційний процес для заданого критерію 'fun' збігається до розв’язку x.

exitflag=0 означає, що максимальну кількість поставлених експериментів перевищено.

exitflag<0 означає, що ітераційний процес для заданого критерію 'fun' не збігається до розв’язку.

[x,fval,exitflag,output]=fminsearch('fun',x0,options) – виконує вищевказане та видає структуру output, у якій міститься інформація про оптимізацію:

output.algorithm – застосований алгоритм пошуку екстремуму;

output.funcCount – кількість поставлених експериментів;

output.iterations – кількість виконаних ітерацій.

Приклад застосуванням функції fminsearch для пошуку екстремуму дво-параметричного критерію, заданого функцією myfun(х), з виведенням значень експериментів при кожній ітерації, точністю вхідних параметрів 10-3 та виведенням знайдених координат екстремуму x, значення критерію в точці екстремуму fval, умови виходу з ітераційного процесу exitflag та кількості проведених експериментів:

[x,fval,exitflag,output]=fminsearch('myfun',[-3 0], optimset('Display','iter','TolX',1e-3));

x_min=x(1) % перша координата екстремуму

y_min=x(2) % друга координата екстремуму

f_min=fval % значення критерію в точці екстремуму

exitflag % умова виходу з ітераційного процесу

n=output.funcCount % кількість проведених експериментів

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