Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Funciones de gráfica

Representar una optimización durante la ejecución

Puede representar varias medidas de progreso mientras se ejecuta un solver. Establezca el par nombre-valor PlotFcn en optimoptions y especifique una o varias funciones de representación para que el solver las llame en cada iteración. Pase un identificador de función o un arreglo de celdas de identificadores de función.

Hay disponible una variedad de funciones de gráfica predefinidas. Consulte la descripción de la opción PlotFcn en la página de referencia de la función del solver.

También puede utilizar una función de gráfica escrita de forma personalizada. Escriba un archivo de función con la misma estructura que una función de salida. Para obtener más información sobre esta estructura, consulte Output Function and Plot Function Syntax.

Utilizar una función de gráfica

Este ejemplo muestra cómo utilizar funciones de gráfica para visualizar el progreso del algoritmo fmincon'interior-point'. El problema se ha tomado de Resolver un problema no lineal restringido basado en solvers.

Escriba la función objetivo no lineal y la función de restricción, incluyendo sus gradientes. La función objetivo es la función de Rosenbrock.

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

Guarde este archivo como rosenbrockwithgrad.m.

La función de restricción es que la solución cumpla 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

Guarde este archivo como unitdisk2.m.

Cree opciones para el solver que incluyan llamar a tres funciones de gráfica.

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

Cree el punto inicial x0 = [0,0] y establezca las entradas restantes en vacías ([]).

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

Llame a fmincon, incluyendo las opciones.

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

Figure Optimization Plot Function contains 3 axes objects. Axes object 1 with title Current Point contains an object of type bar. Axes object 2 with title Current Function Value: 0.0456748 contains an object of type line. Axes object 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

Temas relacionados