Функции построения графика

Постройте график оптимизации во время выполнения

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

Существует множество предопределенных функций построения графика. Смотрите 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

Похожие темы