Main Content

Configurar opciones de optimización

Cómo configurar opciones

Puede especificar los parámetros de optimización usando una estructura options que cree con la función optimset. A continuación, pase options como entrada a la función de optimización; por ejemplo, llamando a fminbnd con la sintaxis

x = fminbnd(fun,x1,x2,options)

o a fminsearch, con la sintaxis

x = fminsearch(fun,x0,options)

Por ejemplo, para mostrar la salida del algoritmo en cada iteración, establezca la opción Display en 'iter':

options = optimset('Display','iter');

Tabla de opciones

OpciónDescripciónSolvers

Display

Indicador sobre si los pasos intermedios aparecen en la pantalla.

  • 'notify' (predeterminado) muestra la salida solo si la función no converge.

  • 'iter' muestra los pasos intermedios (no disponible con lsqnonneg). Consulte Optimization Solver Iterative Display.

  • 'off' o 'none' no muestran pasos intermedios.

  • 'final' solo muestra la salida final.

fminbnd, fminsearch, fzero, lsqnonneg

FunValCheck

Compruebe si los valores de la función objetivo son válidos.

  • 'on' muestra un error cuando la función objetivo o las restricciones devuelven un valor que es complejo o NaN.

  • 'off' (predeterminado) no muestra ningún error.

fminbnd, fminsearch, fzero

MaxFunEvals

Número máximo de evaluaciones de función permitidas. El valor predeterminado es 500, para fminbnd, y 200*length(x0), para fminsearch.

fminbnd, fminsearch

MaxIter

Número máximo de iteraciones permitidas. El valor predeterminado es 500, para fminbnd, y 200*length(x0), para fminsearch.

fminbnd, fminsearch

OutputFcn

Muestra información sobre las iteraciones del solver. El valor predeterminado es [] (ninguno). Consulte Optimization Solver Output Functions.

fminbnd, fminsearch, fzero

PlotFcns

Representa la información sobre las iteraciones del solver. El valor predeterminado es [] (ninguno). Para conocer las funciones predefinidas disponibles, consulte Optimization Solver Plot Functions.

fminbnd, fminsearch, fzero

TolFun

Tolerancia de finalización para el valor de la función. El valor predeterminado es 1.e-4. Consulte Tolerancias y criterios de parada.

fminsearch

TolX

Tolerancia de finalización para x. El valor predeterminado es 1.e-4, excepto para fzero, que tiene un valor predeterminado de eps (= 2.2204e-16), y lsqnonneg, que tiene un valor predeterminado de 10*eps*norm(c,1)*length(c). Consulte Tolerancias y criterios de parada.

fminbnd, fminsearch, fzero, lsqnonneg

Tolerancias y criterios de parada

El número de iteraciones de una optimización depende de los criterios de parada del solver. Estos criterios incluyen varias tolerancias que puede establecer. Por lo general, una tolerancia es un umbral que, si se cruza, detiene las iteraciones de un solver.

Sugerencia

Por lo general, establezca las tolerancias TolFun y TolX muy por encima de eps y, normalmente, por encima de 1e-14. Establecer pequeñas tolerancias no garantiza resultados precisos. En su lugar, un solver puede no reconocer cuándo ha convergido y continuar con iteraciones inútiles. Un valor de tolerancia inferior a eps desactivará, en la práctica, esa condición de parada. Este consejo no se aplica a fzero, que utiliza un valor predeterminado de eps para TolX.

  • TolX es un límite inferior del tamaño de un paso, es decir, la norma de (xixi+1). Si el solver intenta dar un paso menor que TolX, las iteraciones terminan. Los solvers suelen utilizar TolX como límite relativo, lo que significa que las iteraciones terminan cuando |(xixi+1)| < TolX*(1 + |xi|), o una medida relativa similar.

    Plot showing how iterations end when the last step is smaller than TolFun or TolX.

  • TolFun es un límite inferior del cambio en el valor de la función objetivo durante un paso. Si |f(xi) – f(xi+1)| < TolFun, la iteración termina. Los solvers suelen utilizar TolFun como límite relativo, lo que significa que las iteraciones terminan cuando |f(xi) – f(xi+1)| < TolFun(1 + |f(xi)|), o una medida relativa similar.

  • MaxIter es un límite del número de iteraciones del solver. MaxFunEvals es un límite del número de evaluaciones de funciones.

Nota

A diferencia de otros solvers, fminsearch se detiene cuando satisface tanto TolFun como TolX.

Estructura de la salida

La estructura output incluye el número de evaluaciones de la función, el número de iteraciones y el algoritmo. La estructura aparece cuando se proporciona fminbnd, fminsearch o fzero con un cuarto argumento de salida, como en

[x,fval,exitflag,output] = fminbnd(@humps,0.3,1);

Los detalles de la estructura output de cada solver se encuentran en las páginas de referencia de las funciones.

La estructura output no es una opción que se elija con optimset. Sino que es una salida opcional de fminbnd, fminsearch y fzero.

Temas relacionados