exponenta event banner

Функции графика

Печать оптимизации во время выполнения

Можно построить график различных показателей прогресса во время выполнения решателя. Установите PlotFcn пара имя-значение в optimoptionsи укажите одну или несколько функций печати, которые решатель должен вызывать в каждой итерации. Передача дескриптора функции или массива ячеек дескрипторов функции.

Существует множество предварительно определенных функций печати. См. раздел PlotFcn описание опции на справочной странице функции решателя.

Также можно использовать пользовательскую функцию печати. Запишите файл функции, используя ту же структуру, что и выходная функция. Дополнительные сведения об этой структуре см. в разделах Функция вывода и Синтаксис функции печати.

Использование функции печати

В этом примере показано, как использовать функции печати для просмотра хода выполнения fmincon 'interior-point' алгоритм. Задача взята из команды «Решить ограниченную нелинейную задачу на основе решателя».

Запишите нелинейные целевые функции и функции ограничения, включая их градиенты. Целевой функцией является функция Розенброка.

type rosenbrockwithgrad
function [f,g] = rosenbrockwithgrad(x)
% Calculate objective f
f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;

if nargout > 1 % gradient required
    g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));
        200*(x(2)-x(1)^2)];
end

Сохранить этот файл как rosenbrockwithgrad.m.

Функция ограничения заключается в том, что решение удовлетворяет norm(x)^2 <= 1.

type unitdisk2
function [c,ceq,gc,gceq] = unitdisk2(x)
c = x(1)^2 + x(2)^2 - 1;
ceq = [ ];

if nargout > 2
    gc = [2*x(1);2*x(2)];
    gceq = [];
end

Сохранить этот файл как unitdisk2.m.

Создайте структуру опций, которая включает вызов трех функций печати:

options = optimoptions(@fmincon,'Algorithm','interior-point',...
 'SpecifyObjectiveGradient',true,'SpecifyConstraintGradient',true,...
 'PlotFcn',{@optimplotx,@optimplotfval,@optimplotfirstorderopt});

Создание начальной точки x0 = [0,0]и установите остальные входы в пустое состояние ([]).

x0 = [0,0];
A = [];
b = [];
Aeq = [];
beq = [];
lb = [];
ub = [];

Звонить fmincon, включая варианты.

fun = @rosenbrockwithgrad;
nonlcon = @unitdisk2;
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

Figure Optimization Plot Function contains 3 axes. Axes 1 with title Current Point contains an object of type bar. Axes 2 with title Current Function Value: 0.0456748 contains an object of type line. Axes 3 with title First-order Optimality: 2.16246e-08 contains an object of type line.

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in 
feasible directions, to within the value of the optimality tolerance,
and constraints are satisfied to within the value of the constraint tolerance.
x = 1×2

    0.7864    0.6177

Связанные темы