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.

Establecer opciones de optimización

Cómo establecer opciones

Puede especificar parámetros de optimización con una estructura options que cree con la función optimset. Entonces pasa options como una entrada para 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 las salidas del algoritmo en cada iteración, establezca la opción Display como 'iter':

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

Tabla de opciones

OpciónDescripciónSolvers

Display

Una marca indica si los pasos intermedios aparecen en la pantalla.

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

  • 'iter' muestra los pasos intermedios (no disponibles con lsqnonneg). Consulte Visualización iterativa del solver de optimización.

  • 'off' o 'none' no muestra los pasos intermedios.

  • 'final' muestra solo la salida final.

fminbnd, fminsearch, fzero, lsqnonneg

FunValCheck

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

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

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

fminbnd, fminsearch, fzero

MaxFunEvals

El 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

El 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 de las iteraciones del solver. El valor predeterminado es [] (ninguno). Consulte Funciones de salida del solver de optimización.

fminbnd, fminsearch, fzero

PlotFcns

Representa información sobre las iteraciones del solver. El valor predeterminado es [] (ninguno). Para las funciones predefinidas disponibles, consulte Funciones de representación del solver de optimización.

fminbnd, fminsearch, fzero

TolFun

La tolerancia de terminación para el valor de la función. El valor predeterminado es 1.e-4. Consulte Tolerancias y criterios de detención.

fminsearch

TolX

La tolerancia de terminació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 detención.

fminbnd, fminsearch, fzero, lsqnonneg

Tolerancias y criterios de detención

El número de iteraciones en una optimización depende de los criterios de detención para el solver. Estos criterios incluyen varias tolerancias que usted puede establecer. En general, una tolerancia es un umbral que, si se cruza, detiene las iteraciones de un solver.

Sugerencia

En general, establezca las tolerancias TolFun y TolX muy por encima de eps y normalmente por encima de 1e-14. Establecer tolerancias bajas no garantiza resultados precisos. En su lugar, un solver puede no reconocer cuando ha convergido y podría continuar con iteraciones inútiles. Un valor de tolerancia menor que eps efectivamente deshabilita esa condición de detención. 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, lo que significa la norma (xi – xi+1). Si el solver intenta dar un paso que es más pequeño que TolX, terminan las iteraciones. Los solvers suelen utilizar TolX como un límite relativo, lo que significa que las iteraciones terminan cuando |(xi – xi+1)| < TolX*(1 + |xi|), o una medida relativa similar.

  • TolFun es un límite inferior en el cambio del valor de la función objetiva durante un paso. Si |f(xi) – f(xi+1)| < TolFun, terminan las iteraciones. Los solvers suelen utilizar TolFun como un 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 en el número de iteraciones de un solver. MaxFunEvals es un límite en el número de evaluaciones de función.

Nota

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

Estructura de salidas

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 proporciona a fminbnd, fminsearch o fzero un cuarto argumento de salida, como en

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

Los detalles de la estructura output para cada solver están en las páginas de referencia de las funciones.

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

Temas relacionados