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.

Sintaxis de función de salida

¿Qué son las funciones de salida?

El campo de especifica una o más funciones a las que llama una función de optimización en cada iteración.OutputfcnOpciones Normalmente, puede utilizar una función de salida para trazar puntos en cada iteración o para mostrar las cantidades de optimización del algoritmo. Utilizando una función de salida puede ver, pero no establecer, las cantidades de optimización.

Precaución

funciones de salida y las funciones de trazado difieren de las de otros solucionadores.intlinprog Ver.Función de salida y sintaxis de función de trazadointlinprog

Para configurar una función de salida, haga lo siguiente:

  1. Escriba la función de salida como un archivo de función o una función local.

  2. Se usa para establecer el valor de ser un identificador de función, es decir, el nombre de la función precedida por el signo @.optimoptionsOutputfcn Por ejemplo, si la función de salida es, el comandooutfun.m

     options = optimoptions(@solvername,'OutputFcn', @outfun);

    Especifica que debe ser el identificador.OutputFcnoutfun Para especificar más de una función de salida, utilice la sintaxis

     options = optimoptions(@solvername,'OutputFcn',{@outfun, @outfun2});
  3. Llame a la función de optimización como un argumento de entrada.Opciones

Consulte un ejemplo de una función de salida.Funciones de salida

explica cómo parametrizar la función de salida, si es necesario.Pasar parámetros adicionalesOutputFcn

Estructura de la función de salida

La línea de definición de función de la función de salida tiene la siguiente forma:

stop = outfun(x,optimValues,state)

Dónde

  • es el punto calculado por el algoritmo en la iteración actual.x

  • es una estructura que contiene datos de la iteración actual. describe la estructura detalladamente.optimValuesLos campos de optimValues

  • es el estado actual del algoritmo. enumera los valores posibles.stateLos Estados del algoritmo

  • es una marca que es o depende de si la rutina de optimización debe salir o continuar.stoptruefalse Consulte para obtener más información.Stop Flag

La función de optimización pasa los valores de los argumentos de entrada a cada iteración.outfun

Los campos de optimValues

En la tabla siguiente se enumeran los campos de la estructura.optimValues Una función de optimización determinada devuelve valores solo para algunos de estos campos. Para cada campo, la columna devuelto por funciones de la tabla enumera las funciones que devuelven el campo.

Argumentos de salida correspondientes

Algunos de los campos corresponden a los argumentos de salida de la función de optimización.optimValues Después de la iteración final del algoritmo de optimización, el valor de este campo equivale al argumento de salida correspondiente. Por ejemplo, corresponde al argumento de salida.optimValues.fvalfval Por lo tanto, si llama con una función de salida y devuelve, el valor final de Equals.fminconfvaloptimValues.fvalfval La columna Description de la tabla siguiente indica los campos que tienen un argumento de salida correspondiente.

Pantalla de línea de comandos

Los valores de algunos campos de se muestran en la línea de comandos cuando se llama a la función de optimización con el campo de establecido en, como se describe en.optimValuesDisplayOpciones'iter'Visualización iterativa Por ejemplo, se muestra en la columna.optimValues.fvalf(x) La columna de visualización de línea de comandos de la tabla siguiente indica los campos que se pueden mostrar en la línea de comandos.

Algunos campos solo se aplican a algoritmos específicos:optimValues

  • COMOactive-set

  • Dtrust-region-dogleg

  • IPinterior-point

  • LMlevenberg-marquardt

  • Qquasi-newton

  • SQPsqp

  • TRtrust-region

  • TRRtrust-region-reflective

Algunos campos existen en ciertos solucionadores o algoritmos, pero siempre están llenos de valores vacíos o cero, por lo que no tienen sentido.optimValues Estos campos incluyen:

  • para y.constrviolationfminuncTRfsolveTRR

  • para y, y para.procedurefminconTRRSQPfminunc

Campos optimValues

OptimValues (campo) (optimValues. Field)DescripciónDevuelto por FunctionsPantalla de línea de comandos

attainfactor

Factor de logro para el problema multiobjetivo. Para obtener más información, consulte.Método de consecución de objetivo

fgoalattain

Ninguno

cgiterations

Número de iteraciones de degradado conjugada en la iteración de optimización actual.

(IP, TRR), (TR), (TRR), (TRR), (TRR)fminconfminuncfsolvelsqcurvefitlsqnonlin

CG-iterations

Ver.Visualización iterativa

constrviolation

Violación de restricción máxima.

, , ,fgoalattainfminconfminimaxfseminf

y proporcione valores de campo en blanco.fminuncTRfsolveTRR

OMax constraintFeasibility

Ver.Visualización iterativa

degenerate

Medida de la degeneración. Un punto es sidegenerate

La derivada parcial con respecto a una de las variables es 0 en el punto.

Una restricción enlazada está activa para esa variable en el punto.

Ver.Degeneración

(TRR), (TRR), (TRR)fminconlsqcurvefitlsqnonlin

Ninguno

directionalderivative

Derivado direccional en la dirección de búsqueda.

, (AS),, (Q),, (LM), (LM), (LM)fgoalattainfminconfminimaxfminuncfseminffsolvelsqcurvefitlsqnonlin

Directional derivative

Ver.Visualización iterativa

firstorderopt

Optimalidad de primer orden (depende del algoritmo). El valor final equivale a la salida de función de optimización.output.firstorderopt

, , , , , , ,fgoalattainfminconfminimaxfminuncfseminffsolvelsqcurvefitlsqnonlin

First-order optimality

Ver.Visualización iterativa

funccount

Número acumulado de evaluaciones de funciones. El valor final equivale a la salida de función de optimización.output.funcCount

, , , , , , , , , ,fgoalattainfminbndfminconfminimaxfminsearchfminuncfsolvefzerofseminflsqcurvefitlsqnonlin

OF-countFunc-count

Ver.Visualización iterativa

fval

Valor de función en el punto actual. El valor final equivale a la salida de función de optimización.fval

Para, es el valor de la función vectorial, y la visualización iterativa es la norma cuadrada de este vector.fsolvefvalf(x)

, , , , , , , ,fgoalattainfminbndfminconfminimaxfminsearchfminuncfseminffsolvefzero

f(x)

Ver.Visualización iterativa

gradient

Gradiente actual de la función objetiva, ya sea un degradado analítico si lo proporciona o una aproximación de diferenciación finita. El valor final equivale a la salida de función de optimización.grad

, , , , , , ,fgoalattainfminconfminimaxfminuncfseminffsolvelsqcurvefitlsqnonlin

Ninguno

iteration

Número de iteración: comienza en.0 El valor final equivale a la salida de función de optimización.output.iterations

, , , , , , , , , ,fgoalattainfminbndfminconfminimaxfminsearchfminuncfsolvefseminffzerolsqcurvefitlsqnonlin

Iteration

Ver.Visualización iterativa

lambda

El parámetro Levenberg-Marquardt, en la iteración actual.lambda Ver.El método Levenberg-Marquardt

(LM), (LM), (LM)fsolvelsqcurvefitlsqnonlin

Lambda

lssteplength

Longitud de paso real dividida por la longitud del paso pronosticada inicialmente

(AS, SQP), (Q)fminconfminunc

o oSteplengthLine search steplengthStep-size

Ver.Visualización iterativa

maxfval

Valor máximo de la función

fminimax

Ninguno

positivedefinite

Si el algoritmo detecta la curvatura negativa mientras se computan el paso Newton.0

Lo contrario.1

(TRR), (TR), (TRR), (TRR), (TRR)fminconfminuncfsolvelsqcurvefitlsqnonlin

Ninguno

procedure

Mensajes de procedimiento.

,, (AS),,,,fgoalattainfminbndfminconfminimaxfminsearchfseminffzero

y, y proporcionar valores de campo en blanco.fminconTRRSQPfminunc

Procedure

Ver.Visualización iterativa

ratio

Ratio de cambio en la función objetivo a cambiar en la aproximación cuadrática.

(TRR), (TR), (TRR), (TRR), (TRR)fminconfminuncfsolvelsqcurvefitlsqnonlin

Ninguno

residual

El vector residual.

, ,lsqcurvefitlsqnonlin

Residual

Ver.Visualización iterativa

resnorm

2-norma del residual cuadrado.

,lsqcurvefitlsqnonlin

Resnorm

Ver.Visualización iterativa

searchdirection

Dirección de búsqueda.

, (AS, SQP),, (Q),, (LM), (LM), (LM)fgoalattainfminconfminimaxfminuncfseminffsolvelsqcurvefitlsqnonlin

Ninguno

stepaccept

Estado del paso actual de la región de confianza. Devuelve true si el paso de la región de confianza actual se realizó correctamente y false si el paso de la región de confianza no se realizó correctamente.

Dfsolve

Ninguno

stepsize

Tamaño de paso actual (desplazamiento en).x El valor final equivale a la salida de función de optimización.output.stepsize

, , , , , , ,fgoalattainfminconfminimaxfminuncfseminffsolvelsqcurvefitlsqnonlin

O Step-sizeNorm of Step

Ver.Visualización iterativa

trustregionradius

Radio de la región de confianza.

(IP, TRR), (TR), (D, TRR), (TRR), (TRR)fminconfminuncfsolvelsqcurvefitlsqnonlin

Trust-region radius

Ver.Visualización iterativa

Degeneración

El valor del campo, que mide la degeneración del punto de optimización actual, se define de la siguiente manera.degeneratex En primer lugar, defina un vector, del mismo tamaño que, para el cual es la distancia mínima desde las entradas TH de los límites inferior y superior, y.rxr(i)x(i)ilbub Es decir

r = min(abs(ub-x, x-lb))

Entonces el valor de es la entrada mínima del vector, donde está el degradado de la función objetiva.degenerater + abs(grad)grad El valor de es 0 si hay un índice para el que se cumplen las dos opciones siguientes:degeneratei

  • grad(i) = 0

  • equivale a la entrada th del límite inferior o superior.x(i)i

Los Estados del algoritmo

La tabla siguiente enumera los valores posibles para:state

EstadoDescripción

'init'

El algoritmo está en el estado inicial antes de la primera iteración.

'interrupt'

El algoritmo está en alguna parte de la iteración costosa computacionalmente. En este estado, la función de salida puede interrumpir la iteración actual de la optimización. En este momento, los valores de y son los mismos que en la última llamada a la función de salida en la que.xoptimValuesstate=='iter'

'iter'

El algoritmo está al final de una iteración.

'done'

El algoritmo está en el estado final después de la última iteración.

El estado solo se produce en el algoritmo y en los, y los solucionadores.'interrupt'fmincon'active-set'fgoalattainfminimaxfseminf Allí, el estado puede ocurrir antes de una solución de subproblema de programación cuadrática o una búsqueda de línea.

El código siguiente ilustra cómo la función de salida podría utilizar el valor de para decidir qué tareas realizar en la iteración actual:state

switch state     case 'iter'           % Make updates to plot or guis as needed     case 'interrupt'           % Probably no action here. Check conditions to see             % whether optimization should quit.     case 'init'           % Setup for plots or guis     case 'done'           % Cleanup of plots, guis, or final plot otherwise end

Stop Flag

El argumento de salida es una marca que es o.stoptruefalse La marca indica a la función de optimización si la optimización debe salir o continuar. Los siguientes ejemplos muestran formas típicas de usar la marca.stop

Detener una optimización basada en datos en optimValues

La función de salida puede detener una optimización en cualquier iteración basada en los datos actuales.optimValues Por ejemplo, el código siguiente se establece en si el derivado direccional es menor que:stoptrue.01

function stop = outfun(x,optimValues,state) stop = false; % Check if directional derivative is less than .01. if optimValues.directionalderivative < .01     stop = true; end 

Detener una optimización basada en la entrada de GUI

Si diseña una GUI para realizar optimizaciones, puede hacer que la función de salida detenga una optimización cuando un usuario haga clic en un botón de la GUI.Stop El código siguiente muestra cómo hacerlo, suponiendo que la devolución de llamada de botón almacena el valor en el campo de una estructura llamada:StoptrueoptimstophandleshObject

function stop = outfun(x,optimValues,state) stop = false; % Check if user has requested to stop the optimization. stop = getappdata(hObject,'optimstop');