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.

Salir de banderas y salir de mensajes

Las banderas de salida

Cuando un solucionador de optimización completa su tarea, establece un.marca de salida Una marca de salida es un entero que es un código por el motivo por el que el solucionador detuvo sus iteraciones. En general:

  • Las banderas de salida positivas corresponden a resultados exitosos.

  • Las marcas de salida negativas corresponden a resultados fallidos.

  • El indicador de salida cero corresponde al solucionador que se detiene superando un límite de iteración o un límite en el número de evaluaciones de función (vea y vea también).Iteraciones y recuentos de funcionesTolerancias y criterios de detención

Una tabla de salidas de solucionador en la sección de referencia de función del solucionador enumera el significado de las marcas de salida de cada solucionador.

Nota

Las marcas de salida no son guías infalibles para la calidad de una solución. Muchos otros factores, como la configuración de tolerancia, pueden afectar si una solución es satisfactoria para usted. Usted es responsable de decidir si un solucionador devuelve una respuesta satisfactoria. A veces, una marca de salida negativa no corresponde a una solución "mala". Del mismo modo, a veces un indicador de salida positivo no se corresponde con una solución "buena".

Para obtener una marca de salida, llame a un solucionador con la sintaxis.exitflag Esta sintaxis depende del solucionador. Para obtener más información, consulte las páginas de referencia de la función Solver. Por ejemplo, para, la sintaxis de llamada para obtener un indicador de salida esfsolve

[x,fval,exitflag] = fsolve(...)

En el ejemplo siguiente se usa esta sintaxis. Supongamos que desea resolver el sistema de ecuaciones no lineales

2x1x2=ex1x1+2x2=ex2.

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 con la sintaxis en el punto inicial [-5 -5]:fsolveexitflag

[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, se encuentra que un valor de la marca de salida significa "función convergido a una solución."fsolveexitflag1x En otras palabras, los informes son casi cero en =.fsolvemyfcnx[0.5671 0.5671]

Salir de mensajes

Cada solucionador emite un mensaje a la ventana de comandos al final de sus iteraciones.MATLAB® Este mensaje explica brevemente por qué el solucionador se detuvo. El mensaje podría dar más detalles que la marca de salida.

Muchos ejemplos en esta documentación muestran los mensajes de salida. Por ejemplo, vea o.Minimice la función de Rosenbrock en la línea de comandoPaso 3: invocar fminunc utilizando las opciones. En el ejemplo de la sección anterior, se muestra el siguiente mensaje de salida:Las banderas 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 degradado es relevante. El mensaje también indica que la tolerancia de función controla qué tan cerca 0 el vector de los valores de función debe ser para considerar la solución como completada.fsolve

Mensajes de salida mejorados

Algunos solucionadores tienen mensajes de salida que contienen vínculos para obtener más información. Hay dos tipos de enlaces:

  • Enlaces en palabras o frases. Si hace clic en un vínculo de este tipo, se abre una ventana que muestra una definición del término o proporciona otra información. La nueva ventana puede contener enlaces a la documentación del navegador de ayuda para obtener información más detallada.

  • Un enlace como la última línea de la pantalla que dice.<stopping criteria details> Si hace clic en este vínculo, muestra más detalles sobre el motivo por el que se detuvo el solucionador.MATLAB

El solucionador ha mejorado los mensajes de salida:fminunc

opts = optimoptions(@fminunc,'Algorithm','quasi-newton'); % 'trust-region' needs gradient [xfinal fval exitflag] = fminunc(@sin,0,opts)

Esto produce los siguientes resultados:

Cada una de las palabras o frases subrayadas contiene un enlace que proporciona más información.

  • El vínculo imprime lo siguiente en la línea de comandos:<stopping criteria details>MATLAB

    Optimization completed: The first-order optimality measure, 0.000000e+00, is less  than options.OptimalityTolerance = 1.000000e-06.
  • Los otros enlaces traen una ventana de ayuda con definiciones de términos. Por ejemplo, al hacer clic en el vínculo se abre la siguiente ventana:Local minimum found

    Al hacer clic en el vínculo de expansor se produce la definición de la medida de optimalidad de primer orden para:first-order optimality measurefminunc

    El enlace del expansor es una manera de obtener más información en la misma ventana. Al hacer clic en el vínculo de expansor, se cierra la definición.first-order optimality measure

  • Los otros vínculos abren el visor de ayuda.

Opciones de mensaje de salida

Establezca la opción para controlar la apariencia de los mensajes de salida y la visualización iterativa.Display Para obtener más información, consulte.Visualización iterativa La siguiente tabla muestra el efecto de los distintos ajustes de la opción.Display

Valor de la opción de visualizaciónSalida a la ventana de comandos
Mensaje de salidaVisualización iterativa
, o el sinónimo'none''off'NingunoNinguno
(por defecto para la mayoría de los solucionadores)'final'PredeterminadoNinguno
'final-detailed'DetalladaNinguno
'iter'Predeterminado
'iter-detailed'Detallada
'notify'Por defecto sólo si ≤ 0exitflagNinguno
'notify-detailed'Detallado sólo si ≤ 0exitflagNinguno

Por ejemplo,

opts = optimoptions(@fminunc,'Display','iter-detailed','Algorithm','quasi-newton'); [xfinal fval] = fminunc(@cos,1,opts);

produce la siguiente visualización:

Temas relacionados