Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Funciones de trazado

Trazar una optimización durante la ejecución

Puede trazar varias medidas de progreso durante la ejecución de un solucionador. Establezca el par nombre-valor y especifique una o varias funciones de trazado para que el solucionador la llame en cada iteración.PlotFcnoptimoptions Pase un identificador de función o una matriz de identificadores de función.

Hay una variedad de funciones de trazado predefinidas disponibles. Ver:

  • La descripción de la opción en la página de referencia de la función SolverPlotFcn

  • Optimization app > Options > Plot functions

También puede utilizar una función de trazado escrita a medida. Escribir un archivo de función utilizando la misma estructura que una función de salida. Para obtener más información sobre esta estructura, consulte.Sintaxis de función de salida

Mediante una función de trazado

En este ejemplo se muestra cómo utilizar una función de trazado para ver el progreso del algoritmo de punto interior.fmincon El problema se toma de la introducción.Resuelva un problema no lineal restringido, basado en Solver La primera parte del ejemplo muestra cómo ejecutar la optimización mediante la aplicación de optimización. La segunda parte muestra cómo ejecutar la optimización desde la línea de comandos.

Nota

La aplicación Optimization advierte que se eliminará en una versión futura.

Ejecución de la optimización mediante la aplicación de optimización

  1. Escriba las funciones de objetivo y restricción no lineales, incluidas las derivadas:

    function [f g H] = rosenboth(x) % ROSENBOTH returns both the value y of Rosenbrock's function % and also the value g of its gradient and H the Hessian.  f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;  if nargout > 1     g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));         200*(x(2)-x(1)^2)];          if nargout > 2         H = [1200*x(1)^2-400*x(2)+2, -400*x(1);             -400*x(1), 200];       end end

    Guarde este archivo como.rosenboth.m

    function [c,ceq,gc,gceq] = unitdisk2(x) % UNITDISK2 returns the value of the constraint % function for the disk of radius 1 centered at % [0 0]. It also returns the gradient.  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

  2. Inicie la aplicación Optimization escribiendo en la línea de comandos.optimtool

  3. Configurar la optimización:

    • Elija el fmincon Solver.

    • Elija el Interior point Algoritmo.

    • Establezca la función objetivo en.@rosenboth

    • Elegir Gradient supplied para la función objetiva derivada.

    • Establezca el punto de inicio en.[0 0]

    • Establezca la función de restricción no lineal en.@unitdisk2

    • Elegir Gradient supplied para los derivados de la restricción no lineal.

    El panel debe coincidir con la siguiente figura.Problem Setup and Results

  4. Elija tres funciones de trazado en el panel:, y.OptionsCurrent pointFunction valueFirst order optimality

  5. Haga clic en el botón debajo.StartRun solver and view results

  6. La salida aparece como sigue en la aplicación de optimización.

    Además, las siguientes tres parcelas aparecen en una ventana separada.

  • El gráfico "punto actual" muestra gráficamente el minimizador, que se notifica como el en el panel.[0.786,0.618]Final pointRun solver and view results Esta gráfica se actualiza en cada iteración, mostrando los iterados intermedios.

  • La gráfica "valor de función actual" muestra el valor de la función objetiva en todas las iteraciones. Este gráfico es casi monótono, mostrando reduce la función objetiva en casi todas las iteraciones.fmincon

  • La gráfica de "optimalidad de primer orden" muestra la medida de optimalidad de primer orden en todas las iteraciones.

La ejecución de la optimización desde la línea de comandos

  1. Escribir el objetivo no lineal y las funciones de restricción, incluidos los derivados, como se muestra en.Ejecución de la optimización mediante la aplicación de optimización

  2. Cree una estructura de opciones que incluya la llamada a las tres funciones de trazado:

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

    x = fmincon(@rosenboth,[0 0],[],[],[],[],[],[],...     @unitdisk2,options)
  4. da la siguiente salida:fmincon

    Local minimum found that satisfies the constraints.
    
    Optimization completed because the objective function is
    non-decreasing in feasible directions, to within the default
    value of the function tolerance, and constraints are satisfied
    to within the default value of the constraint tolerance.
    
    x =     0.7864    0.6177

    también muestra las tres funciones de trazado, que se muestran al final de.fminconEjecución de la optimización mediante la aplicación de optimización

Temas relacionados