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.
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.PlotFcn
optimoptions
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
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.
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
Inicie la aplicación Optimization escribiendo en la línea de comandos.optimtool
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
Elija tres funciones de trazado en el panel:, y.OptionsCurrent pointFunction valueFirst order optimality
Haga clic en el botón debajo.StartRun solver and view results
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.
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
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});
Llamar:fmincon
x = fmincon(@rosenboth,[0 0],[],[],[],[],[],[],... @unitdisk2,options)
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.fmincon
Ejecución de la optimización mediante la aplicación de optimización