Indicadores de salida y mensajes de salida
Indicadores de salida
Cuando un solver de optimización completa su tarea, establece un indicador de salida. Un indicador de salida es un entero que codifica la razón por la que el solver detuvo sus iteraciones. En general:
Los indicadores de salida positivos corresponden a resultados exitosos.
Los indicadores de salida negativos corresponden a resultados no exitosos.
El indicador de salida cero corresponde a la detención del solver por sobrepasar un límite de iteraciones o un límite del número de evaluaciones de función (consulte Iteraciones y recuentos de la función y también Tolerancias y criterios de detención).
Esta tabla contiene enlaces a la descripción del indicador de salida de cada solver.
Indicador de salida por solver
Nota
Los indicadores de salida no son guías infalibles de la calidad de una solución. Muchos otros factores, como los ajustes de la tolerancia, pueden afectar a que una solución sea o no satisfactoria. Le corresponde a usted decidir si un solver devuelve una respuesta satisfactoria o no. En ocasiones, un indicador de salida negativo no corresponde a una solución "mala". De forma similar, en ocasiones, un indicador de salida positivo no corresponde a una solución "buena".
Obtiene un indicador de salida llamando a un solver con la sintaxis exitflag
. La sintaxis depende del solver. Para obtener más detalles, consulte las páginas de referencia de la función del solver. Por ejemplo, para fsolve
, la sintaxis de llamada para obtener un indicador de salida es
[x,fval,exitflag] = fsolve(...)
El siguiente ejemplo utiliza esta sintaxis. Suponga que desea resolver el sistema de ecuaciones no lineales
Escriba estas ecuaciones como una función anónima que da un vector cero en una solución:
myfcn = @(x)[2*x(1) - x(2) - exp(-x(1)); -x(1) + 2*x(2) - exp(-x(2))];
Llame a fsolve
con la sintaxis exitflag
en el punto inicial [-5 5]:
[xfinal fval exitflag] = fsolve(myfcn,[-5 -5])
Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient. xfinal = 0.5671 0.5671 fval = 1.0e-06 * -0.4059 -0.4059 exitflag = 1
En la tabla para la sintaxis exitflag
de fsolve
, encuentra que el valor de un identificador de salida 1
significa “La función ha convergido a una solución x
”. En otras palabras, fsolve
informa de que myfcn
está cerca de cero en x
= [0.5671 0.5671]
.
Mensajes de salida
Cada solver genera un mensaje en la ventana de comandos de MATLAB® al final de sus iteraciones. Este mensaje explica brevemente por qué se detuvo el solver. Es posible que el mensaje dé más detalles que el indicador de salida.
Muchos ejemplos de esta documentación muestran mensajes de salida, como Definir y resolver un problema en la línea de comandos. El ejemplo de la sección anterior, Indicadores de salida, muestra el siguiente mensaje de salida:
Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.
Este mensaje es más informativo que el indicador de salida. El mensaje indica que el gradiente es relevante. El mensaje también expone que la tolerancia de la función controla lo cerca de 0 que debe estar el vector de los valores de la función para que fsolve
considere la solución como completada.
Mensajes de salida aumentados
Algunos solvers tienen mensajes de salida que contienen enlaces para obtener más información. Hay dos tipos de enlaces:
Enlaces en palabras o frases. Si hace clic en un enlace de este tipo, se abre una ventana que muestra una definición del término o da otra información. La ventana nueva puede contener enlaces a las páginas de documentación online para obtener información más detallada.
Un enlace como la última línea de la pantalla que indica
<stopping criteria details>
. Si hace clic en este enlace, MATLAB muestra más detalles sobre la razón por la que se detuvo el solver.
El solver fminunc
tiene mensajes de salida aumentados:
opts = optimoptions(@fminunc,'Algorithm','quasi-newton'); % 'trust-region' needs gradient [xfinal fval exitflag] = fminunc(@sin,0,opts)
Así se obtienen los siguientes resultados:
Cada una de las palabras o frases subrayadas contiene un enlace que proporciona más información.
El enlace
<stopping criteria details>
imprime lo siguiente en la línea de comandos de MATLAB:Optimization completed: The first-order optimality measure, 0.000000e+00, is less than options.OptimalityTolerance = 1.000000e-06.
Los otros enlaces abren una ventana de ayuda con definiciones de términos. Por ejemplo, haciendo clic en el enlace
Local minimum found
se abre la siguiente ventana:Haciendo clic en el enlace de ampliación
first-order optimality measure
se abre la definición de la medida de optimalidad de primer orden parafminunc
:El enlace de ampliación es una manera de obtener más información en la misma ventana. Haciendo clic en el enlace de ampliación
first-order optimality measure
de nuevo se cierra la definición.Los otros enlaces abren la vista de ayuda.
Opciones de los mensajes de salida
Establezca la opción Display
para controlar la apariencia tanto de los mensajes de salida como de la visualización iterativa. Para obtener más información, consulte Visualización iterativa. La siguiente tabla muestra el efecto de los diferentes ajustes de la opción Display
.
Valor de la opción Display | Salida en la ventana de comandos | |
---|---|---|
Mensaje de salida | Visualización iterativa | |
'none' o el sinónimo 'off' | Ninguno | Ninguna |
'final' (valor predeterminado para la mayoría de solvers) | Valor predeterminado | Ninguna |
'final-detailed' | Detallado | Ninguna |
'iter' | Valor predeterminado | Sí |
'iter-detailed' | Detallado | Sí |
'notify' | Valor predeterminado solo si exitflag ≤ 0 | Ninguna |
'notify-detailed' | Detallado solo si exitflag ≤ 0 | Ninguna |
Por ejemplo:
opts = optimoptions(@fminunc,'Display','iter-detailed','Algorithm','quasi-newton'); [xfinal fval] = fminunc(@cos,1,opts);
genera la siguiente visualización: