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.

fminunc

Busque el mínimo de función multivariable sin restricciones

Descripción

Solucionador de programación no lineal.

Busca el mínimo de un problema especificado por

minxf(x)

Where () es una función que devuelve un escalar.fx

es un vector o una matriz; Ver.xArgumentos de matriz

ejemplo

x = fminunc(fun,x0) comienza en el punto e intenta encontrar un mínimo local de la función descrita en.x0xfun El punto puede ser un escalar, un vector o una matriz.x0

Nota

explica cómo pasar parámetros adicionales a la función objetiva y a las funciones de restricción no lineal, si es necesario.Pasar parámetros adicionales

es para problemas no lineales sin restricciones.fminunc Si su problema tiene restricciones, utilice generalmente.fmincon Ver.Tabla de decisión de optimización

ejemplo

x = fminunc(fun,x0,options) minimiza con las opciones de optimización especificadas en.funOpciones Se usa para establecer estas opciones.optimoptions

ejemplo

x = fminunc(problem) encuentra el mínimo para, donde se describe una estructura.problemproblemArgumentos de entrada Cree la estructura exportando un problema desde la aplicación de optimización, como se describe en.problemExportar su trabajo

ejemplo

[x,fval] = fminunc(___), para cualquier sintaxis, devuelve el valor de la función objetiva en la solución.funx

ejemplo

[x,fval,exitflag,output] = fminunc(___) Además devuelve un valor que describe la condición de salida de, y una estructura con información sobre el proceso de optimización.exitflagfminuncoutput

[x,fval,exitflag,output,grad,hessian] = fminunc(___) Además devuelve:

  • — Gradiente de la solución.gradfunx

  • — Hessian de la solución.hessianfunx Ver.fminunc hessian

Ejemplos

contraer todo

Minimice la función f(x)=3x12+2x1x2+x224x1+5x2.

Escribir una función anónima que calcule el objetivo.

fun = @(x)3*x(1)^2 + 2*x(1)*x(2) + x(2)^2 - 4*x(1) + 5*x(2);

Llame para encontrar un mínimo de cerca.fminuncfun[1,1]

x0 = [1,1]; [x,fval] = fminunc(fun,x0);

Después de algunas iteraciones, devuelve la solución y el valor de la función en,.fminuncxxfval

x,fval
x =      2.2500   -4.7500   fval =    -16.3750

puede ser más rápido y más fiable cuando se proporcionan derivados.fminunc

Escriba una función objetiva que devuelva el degradado, así como el valor de la función. Utilice el formulario condicionado descrito en.Incluyendo gradientes y hessianos La función objetiva es la función de Rosenbrock,

f(x)=100(x2x12)2+(1x1)2,

que tiene gradiente

f(x)=[400(x2x12)x12(1x1)200(x2x12)].

function [f,g] = rosenbrockwithgrad(x) % Calculate objective f f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;  if nargout > 1 % gradient required     g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));         200*(x(2)-x(1)^2)]; end

Guarde este código como un archivo en la ruta de acceso, denominado.MATLAB®rosenbrockwithgrad.m

Cree opciones para utilizar el degradado de la función objetiva. Además, establezca el algoritmo en.'trust-region'

options = optimoptions('fminunc','Algorithm','trust-region','SpecifyObjectiveGradient',true);

Establezca el punto inicial en.[-1,2] Entonces llama.fminunc

x0 = [-1,2]; fun = @rosenbrockwithgrad; x = fminunc(fun,x0,options)
Local minimum found.

Optimization completed because the size of the gradient is less than
the default value of the function tolerance.

<stopping criteria details>


x =

    1.0000    1.0000

Resuelva el mismo problema que en el uso de una estructura problemática en lugar de argumentos separados.Suministre el degradado

Escriba una función objetiva que devuelva el degradado, así como el valor de la función. Utilice el formulario condicionado descrito en.Incluyendo gradientes y hessianos La función objetiva es la función de Rosenbrock,

f(x)=100(x2x12)2+(1x1)2,

que tiene gradiente

f(x)=[400(x2x12)x12(1x1)200(x2x12)].

function [f,g] = rosenbrockwithgrad(x) % Calculate objective f f = 100*(x(2) - x(1)^2)^2 + (1-x(1))^2;  if nargout > 1 % gradient required     g = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));         200*(x(2)-x(1)^2)]; end

Guarde este código como un archivo en la ruta de acceso, denominado.MATLABrosenbrockwithgrad.m

Cree opciones para utilizar el degradado de la función objetiva. Además, establezca el algoritmo en.'trust-region'

options = optimoptions('fminunc','Algorithm','trust-region','SpecifyObjectiveGradient',true);

Cree una estructura problemática, incluido el punto inicial.x0 = [-1,2]

problem.options = options; problem.x0 = [-1,2]; problem.objective = @rosenbrockwithgrad; problem.solver = 'fminunc';

Resuelve el problema.

x = fminunc(problem)
Local minimum found.

Optimization completed because the size of the gradient is less than
the default value of the function tolerance.

<stopping criteria details>


x =

    1.0000    1.0000

Encuentre tanto la ubicación del mínimo de una función no lineal como el valor de la función en ese mínimo.

La función objetiva es

f(x)=x(1)ex22+x22/20.

fun = @(x)x(1)*exp(-(x(1)^2 + x(2)^2)) + (x(1)^2 + x(2)^2)/20;

Busque la ubicación y el valor de la función objetiva del minimizador a partir de.x0 = [1,2]

x0 = [1,2]; [x,fval] = fminunc(fun,x0)
Local minimum found.  Optimization completed because the size of the gradient is less than the default value of the function tolerance.  <stopping criteria details>   x =     -0.6691    0.0000   fval =     -0.4052

Elija Opciones y salidas para examinar el proceso de solución.fminunc

Configure las opciones para obtener una visualización iterativa y utilice el algoritmo.'quasi-newton'

options = optimoptions(@fminunc,'Display','iter','Algorithm','quasi-newton');

La función objetiva es

<math display="block">
<mrow>
<mi>f</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<mi>x</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
<mrow>
<msup>
<mrow>
<mi>e</mi>
</mrow>
<mrow>
<mo>-</mo>
<msubsup>
<mrow>
<mo></mo>
<mi>x</mi>
<mo></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
</mrow>
</msup>
</mrow>
<mo>+</mo>
<msubsup>
<mrow>
<mo></mo>
<mi>x</mi>
<mo></mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msubsup>
<mo>/</mo>
<mn>2</mn>
<mn>0</mn>
<mo>.</mo>
</mrow>
</math>

fun = @(x)x(1)*exp(-(x(1)^2 + x(2)^2)) + (x(1)^2 + x(2)^2)/20;

Inicie la minimización y obtenga resultados que le permitan examinar la calidad y el proceso de la solución.x0 = [1,2]

x0 = [1,2]; [x,fval,exitflag,output] = fminunc(fun,x0,options)
                                                        First-order   Iteration  Func-count       f(x)        Step-size       optimality      0           3         0.256738                         0.173      1           6         0.222149              1          0.131        2           9          0.15717              1          0.158        3          18        -0.227902       0.438133          0.386        4          21        -0.299271              1           0.46        5          30        -0.404028       0.102071         0.0458        6          33        -0.404868              1         0.0296        7          36        -0.405236              1        0.00119        8          39        -0.405237              1       0.000252        9          42        -0.405237              1       7.97e-07    Local minimum found.  Optimization completed because the size of the gradient is less than the value of the optimality tolerance. 
x = 1×2

   -0.6691    0.0000

fval = -0.4052 
exitflag = 1 
output = struct with fields:
       iterations: 9
        funcCount: 42
         stepsize: 2.9343e-04
     lssteplength: 1
    firstorderopt: 7.9721e-07
        algorithm: 'quasi-newton'
          message: '...'

  • La marca de salida muestra que la solución es un óptimo local.1

  • La estructura muestra el número de iteraciones, el número de evaluaciones de funciones y otra información.output

  • La pantalla iterativa también muestra el número de iteraciones y evaluaciones de funciones.

Argumentos de entrada

contraer todo

Función para minimizar, especificada como un identificador de función o un nombre de función. es una función que acepta un vector o array y devuelve un escalar real, la función objetiva evaluada en.funxfx

Especifique como un identificador de función para un archivo:fun

x = fminunc(@myfun,x0)

donde se encuentra una función comomyfunMATLAB

function f = myfun(x) f = ...            % Compute function value at x

También puede especificar como un identificador de función para una función anónima:fun

x = fminunc(@(x)norm(x)^2,x0);

Si puede calcular el degradado de la opción se establece en, como se establece por entonces debe devolver el vector de degradado en el segundo argumento de salida.funandSpecifyObjectiveGradienttrue

options = optimoptions('fminunc','SpecifyObjectiveGradient',true)
fung(x)

Si también puede calcular la matriz de hessian la opción se establece en a través de la opción se establece en, debe devolver el valor de hessian, una matriz simétrica, en un tercer argumento de salida. puede dar un hessian escaso.andHessianFcn'objective'options = optimoptions('fminunc','HessianFcn','objective')andAlgorithm'trust-region'funH(x)fun Ver para más detalles.Hessian para fminunc confianza-región o fmincon confianza-región-reflexivo algoritmos

El algoritmo le permite suministrar una función de multiplicar de hessian.trust-region Esta función da el resultado de un producto vectorial de hessian-Times sin computar el hessian directamente. Esto puede ahorrar memoria. Ver.Función de multiplicar de hessian

Ejemplo: fun = @(x)sin(x(1))*cos(x(2))

Tipos de datos: char | function_handle | string

Punto inicial, especificado como un vector real o una matriz real. Solvers utilizan el número de elementos en y el tamaño de para determinar el número y el tamaño de las variables que acepta.x0x0fun

Ejemplo: x0 = [1,2,3,4]

Tipos de datos: double

Opciones de optimización, especificadas como la salida de o una estructura como devoluciones.optimoptionsoptimset

Algunas opciones se aplican a todos los algoritmos, y otras son relevantes para determinados algoritmos. Consulte para obtener información detallada.Opciones de optimización referencia

Algunas opciones están ausentes en la pantalla.optimoptions Estas opciones aparecen en cursiva en la tabla siguiente. Para obtener más información, consulte.Ver opciones

All Algorithms

Algorithm

Elija el algoritmo.fminunc Las opciones son (predeterminado) o.'quasi-newton''trust-region'

El algoritmo requiere que proporcione el degradado (vea la descripción de), o bien utiliza el algoritmo.'trust-region'funfminunc'quasi-newton' Para obtener información sobre cómo elegir el algoritmo, consulte.Elegir el algoritmo

CheckGradients

Compare los derivados suministrados por el usuario (gradiente de objetivo) con los derivados de diferenciación finita. Las opciones son (predeterminado) o.falsetrue

Para, el nombre es y los valores son o.optimsetDerivativeCheck'on''off' Ver.Las tablas de nombres de opciones actuales y heredadas

Diagnostics

Mostrar información de diagnóstico sobre la función que se debe minimizar o resolver. Las opciones son (predeterminado) o.'off''on'

DiffMaxChange

Cambio máximo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.Inf

DiffMinChange

Cambio mínimo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.0

Display

Nivel de visualización (ver):Visualización iterativa

  • o no muestra ninguna salida.'off''none'

  • muestra la salida en cada iteración y proporciona el mensaje de salida predeterminado.'iter'

  • muestra la salida en cada iteración y proporciona el mensaje técnico de salida.'iter-detailed'

  • muestra la salida solamente si la función no converge, y da el mensaje de salida predeterminado.'notify'

  • muestra la salida sólo si la función no converge y da el mensaje técnico de salida.'notify-detailed'

  • (valor predeterminado) muestra solo la salida final y proporciona el mensaje de salida predeterminado.'final'

  • muestra sólo la salida final y da el mensaje técnico de salida.'final-detailed'

FiniteDifferenceStepSize

Factor de tamaño de paso escalar o vectorial para diferencias finitas. Cuando se establece en un vector, las diferencias finitas de avance sonFiniteDifferenceStepSizevdelta

delta = v.*sign′(x).*max(abs(x),TypicalX);

donde excepto.sign′(x) = sign(x)sign′(0) = 1 Las diferencias finitas centrales son

delta = v.*max(abs(x),TypicalX);

Escalar se expande a un vector.FiniteDifferenceStepSize El valor predeterminado es para las diferencias finitas de avance y para las diferencias finitas centrales.sqrt(eps)eps^(1/3)

El algoritmo de la región de confianza utiliza sólo cuando se establece en.FiniteDifferenceStepSizeCheckGradientstrue

El nombre es.optimsetFinDiffRelStep Ver.Las tablas de nombres de opciones actuales y heredadas

FiniteDifferenceType

Las diferencias finitas, que se utilizan para estimar degradados, son o bien (el valor predeterminado) o (centrado). toma el doble de evaluaciones de funciones, pero debe ser más precisa.'forward''central''central' El algoritmo de la región de confianza utiliza sólo cuando se establece en.FiniteDifferenceTypeCheckGradientstrue

El nombre es.optimsetFinDiffType Ver.Las tablas de nombres de opciones actuales y heredadas

FunValCheck

Compruebe si los valores de función objetiva son válidos. La configuración predeterminada, no realiza una comprobación.'off' La configuración muestra un error cuando la función objetiva devuelve un valor que es, o.'on'complexInfNaN

MaxFunctionEvaluations

Número máximo de evaluaciones de funciones permitidas, un entero positivo. El valor predeterminado es.100*numberOfVariables Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxFunEvals Ver.Las tablas de nombres de opciones actuales y heredadas

MaxIterations

Número máximo de iteraciones permitidas, un entero positivo. El valor predeterminado es.400 Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxIter Ver.Las tablas de nombres de opciones actuales y heredadas

OptimalityTolerance

Tolerancia de terminación en la optimalidad de primer orden (un escalar positivo). El valor predeterminado es.1e-6 Ver.Medida de optimalidad de primer orden

El nombre es.optimsetTolFun Ver.Las tablas de nombres de opciones actuales y heredadas

OutputFcn

Especifique una o varias funciones definidas por el usuario a las que llama una función de optimización en cada iteración. Pasar un identificador de función o una matriz de celdas de identificadores de función. El valor predeterminado es None ().[] Ver.Sintaxis de función de salida

PlotFcn

Traza varias medidas de progreso mientras se ejecuta el algoritmo; seleccionar de parcelas predefinidas o escribir las suyas propias. Pase un nombre de función de trazado integrado, un identificador de función o una matriz de celdas de nombres de función de trazado integrados o identificadores de función. Para las funciones de trazado personalizadas, pase los identificadores de función. El valor predeterminado es None ():[]

  • traza el punto actual.'optimplotx'

  • traza el recuento de funciones.'optimplotfunccount'

  • traza el valor de la función.'optimplotfval'

  • traza el tamaño del paso.'optimplotstepsize'

  • traza la medida de optimalidad de primer orden.'optimplotfirstorderopt'

Para obtener información sobre cómo escribir una función de trazado personalizada, consulte.Sintaxis de función de trazado

El nombre es.optimsetPlotFcns Ver.Las tablas de nombres de opciones actuales y heredadas

SpecifyObjectiveGradient

Gradiente para la función objetiva definida por el usuario. Consulte la descripción para ver cómo definir el degradado.funfun Se establece para que utilice un degradado definido por el usuario de la función objetiva.truefminunc Las causas predeterminadas para estimar los degradados utilizando diferencias finitas.falsefminunc Debe proporcionar el degradado y establecer en, para usar el algoritmo de la región de confianza.SpecifyObjectiveGradienttrue Esta opción no es necesaria para el algoritmo quasi-Newton.

Para, el nombre es y los valores son o.optimsetGradObj'on''off' Ver.Las tablas de nombres de opciones actuales y heredadas

StepTolerance

Tolerancia de terminación activada, un escalar positivo.x El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolX Ver.Las tablas de nombres de opciones actuales y heredadas

TypicalX

Valores típicos.x El número de elementos en es igual al número de elementos en, el punto de partida.TypicalXx0 El valor predeterminado es. utiliza para escalar las diferencias finitas para la estimación de degradado.ones(numberofvariables,1)fminuncTypicalX

El algoritmo utiliza sólo para la opción.trust-regionTypicalXCheckGradients

Algoritmotrust-region
FunctionTolerance

Tolerancia de terminación en el valor de la función, un escalar positivo. El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolFun Ver.Las tablas de nombres de opciones actuales y heredadas

HessianFcn

Si se establece en (por defecto), se aproxima al hessian utilizando diferencias finitas.[]fminunc

Si se establece en, utiliza un hessian definido por el usuario para la función objetiva.'objective'fminunc El hessian es la tercera salida de la función objetiva (ver).fun

El nombre es.optimsetHessFcn Ver.Las tablas de nombres de opciones actuales y heredadas

HessianMultiplyFcn

Función de multiplicación de hessian, especificada como un manejador de funciones. Para problemas estructurados a gran escala, esta función calcula el producto de matriz de Hessian sin formar realmente.H*YH La función es de la forma

W = hmfun(Hinfo,Y)

donde contiene la matriz utilizada para computar.HinfoH*Y

El primer argumento es el mismo que el tercer argumento devuelto por la función objetiva, por ejemplofun

[f,g,Hinfo] = fun(x)

es una matriz que tiene el mismo número de filas que hay dimensiones en el problema.Y La matriz, aunque no se forma explícitamente. utiliza para calcular el preacondicionador.W = H*YHfminuncHinfo Para obtener información sobre cómo suministrar valores para cualquier necesidad de parámetros adicionales, consulte.hmfunPasar parámetros adicionales

Nota

Para utilizar la opción, debe establecerse en.HessianMultiplyFcnHessianFcn[]

Para ver un ejemplo, vea.Minimización con hessian estructurado denso, Equalidades lineales

El nombre es.optimsetHessMult Ver.Las tablas de nombres de opciones actuales y heredadas

HessPattern

Patrón de la Sparsity del hessian para la diferenciación finita. Establecer cuando puede tener ∂HessPattern(i,j) = 12/∂ ∂ ≠ 0.funx(i)x(j) De lo contrario, establecer.HessPattern(i,j) = 0

Se usa cuando es incómodo calcular la matriz de hessian, pero se puede determinar (digamos, por inspección) cuando el componente th del gradiente de depende. puede aproximarse a través de diferencias finitas dispersas (del degradado) si proporciona el valor para.HessPatternHfunifunx(j)fminuncHestructura de la dispersiónHHessPattern En otras palabras, proporcione las ubicaciones de los nonceros.

Cuando se desconoce la estructura, no se establece.HessPattern El comportamiento predeterminado es como si se tratara de una matriz densa de unos.HessPattern A continuación, calcula una aproximación de diferencia finita completa en cada iteración.fminunc Este cálculo puede ser costoso para problemas grandes, por lo que normalmente es mejor determinar la estructura de la dispersión.

MaxPCGIter

Número máximo de iteraciones de degradado conjugada preacondicionadas (PCG), un escalar positivo. El valor predeterminado es.max(1,floor(numberOfVariables/2)) Para obtener más información, consulte.Algoritmo de región de confianza

PrecondBandWidth

Ancho de banda superior del preacondicionador para PCG, un entero no negativo. Por defecto, utiliza el preacondicionamiento diagonal (ancho de banda superior de 0).fminunc Para algunos problemas, el aumento del ancho de banda reduce el número de iteraciones PCG. Ajuste a utiliza una factorización directa (Cholesky) en lugar de los degradados conjugados (CG).PrecondBandWidthInf La factorización directa es computacionalmente más costosa que CG, pero produce un mejor paso de calidad hacia la solución.

SubproblemAlgorithm

Determina cómo se calcula el paso de iteración. El valor predeterminado, toma un paso más rápido pero menos preciso que.'cg''factorization' Ver.Algoritmofminunctrust-region

TolPCG

Tolerancia de terminación en la iteración PCG, un escalar positivo. El valor predeterminado es.0.1

Algoritmoquasi-newton
HessUpdate

Método para elegir la dirección de búsqueda en el algoritmo quasi-Newton. Las opciones son:

ObjectiveLimit

Una tolerancia (criterio de detención) que es un escalar. Si el valor de la función objetiva en una iteración es menor o igual a, las iteraciones se detienen porque el problema es presumiblemente ilimitado.ObjectiveLimit El valor predeterminado es.-1e20

UseParallel

Cuando, estima los degradados en paralelo.truefminunc Deshabilite estableciendo el valor predeterminado,. requiere un gradiente en el objetivo, por lo que no se aplica.falsetrust-regionUseParallel Ver.Computación paralela

Ejemplo: options = optimoptions('fminunc','SpecifyObjectiveGradient',true)

Estructura problemática, especificada como estructura con los siguientes campos:

Nombre de campoEntrada

Objetivo

Función objetiva

x0

Punto inicial parax

solver

'fminunc'

Opciones

Las opciones creadas conoptimoptions

La forma más sencilla de obtener una estructura es exportar el problema desde la aplicación de optimización.problem

Tipos de datos: struct

Argumentos de salida

contraer todo

Solución, devuelta como un vector real o una matriz real. El tamaño de es el mismo que el tamaño de.xx0 Normalmente, es una solución local para el problema cuando es positivo.xexitflag Para obtener información sobre la calidad de la solución, consulte.Cuando el Solver se ejecuta correctamente

Valor de la función objetiva en la solución, devuelto como un número real. Generalmente, =.fvalfun(x)

Motivo detenido, devuelto como un entero.fminunc

1

La magnitud del degradado es menor que la tolerancia.OptimalityTolerance

2

El cambio en era más pequeño que la tolerancia.xStepTolerance

3

El cambio en el valor de la función objetiva era menor que la tolerancia.FunctionTolerance

5

La disminución pronosticada en la función objetiva era menor que la tolerancia.FunctionTolerance

0

Número de iteraciones superada o número de evaluaciones de función superada.MaxIterationsMaxFunctionEvaluations

-1

El algoritmo fue terminado por la función de salida.

-3

La función objetiva en la iteración actual fue inferior.ObjectiveLimit

Información sobre el proceso de optimización, devuelta como una estructura con campos:

iterations

Número de iteraciones tomadas

funcCount

Número de evaluaciones de funciones

firstorderopt

Medida de la optimalidad de primer orden

algorithm

Algoritmo de optimización utilizado

cgiterations

Número total de iteraciones PCG (solo algoritmo)'trust-region'

lssteplength

Tamaño del paso de búsqueda de línea en relación con la dirección de búsqueda (solo algoritmo)'quasi-newton'

stepsize

El desplazamiento final enx

message

Mensaje de salida

Degradado en la solución, devuelto como un vector real. da el gradiente de en el punto.gradfunx(:)

Hessian aproximado, devuelto como una matriz real. Para el significado de. ver.hessianHessian

Algoritmos

contraer todo

Algoritmo quasi-Newton

El algoritmo utiliza el método BFGS quasi-Newton con un procedimiento de búsqueda de línea cúbica.quasi-newton Este método quasi-Newton utiliza la fórmula BFGS (,,, y) para actualizar la aproximación de la matriz Hessiana.[1][5][8][9] Puede seleccionar la fórmula DFP (, y), que se aproxima a la matriz Hessiana inversa, estableciendo la opción en (y la opción para).[4][6][7]HessUpdate'dfp'Algorithm'quasi-newton' Puede seleccionar un método de descenso más empinante estableciendo (y para), aunque esta configuración suele ser ineficaz.HessUpdate'steepdesc'Algorithm'quasi-newton' Ver.Algoritmofminuncquasi-newton

Algoritmo de región de confianza

El algoritmo requiere que se suministre el degradado y se establezca en Using.trust-regionfunSpecifyObjectiveGradienttrueoptimoptions Este algoritmo es un método de región de confianza subespacial y se basa en el método de Newton interior-reflectante descrito en y.[2][3] Cada iteración implica la solución aproximada de un gran sistema lineal utilizando el método de gradientes conjugados preacondicionados (PCG). Mira, y.Algoritmofminunctrust-regionMétodos de la región de confianza para la minimización no linealMétodo de gradiente conjugada precondicionado

Referencias

[1] Broyden, C. G. “The Convergence of a Class of Double-Rank Minimization Algorithms.” Journal Inst. Math. Applic., Vol. 6, 1970, pp. 76–90.

[2] Coleman, T. F. and Y. Li. “An Interior, Trust Region Approach for Nonlinear Minimization Subject to Bounds.” SIAM Journal on Optimization, Vol. 6, 1996, pp. 418–445.

[3] Coleman, T. F. and Y. Li. “On the Convergence of Reflective Newton Methods for Large-Scale Nonlinear Minimization Subject to Bounds.” Mathematical Programming, Vol. 67, Number 2, 1994, pp. 189–224.

[4] Davidon, W. C. “Variable Metric Method for Minimization.” A.E.C. Research and Development Report, ANL-5990, 1959.

[5] Fletcher, R. “A New Approach to Variable Metric Algorithms.” Computer Journal, Vol. 13, 1970, pp. 317–322.

[6] Fletcher, R. “Practical Methods of Optimization.” Vol. 1, Unconstrained Optimization, John Wiley and Sons, 1980.

[7] Fletcher, R. and M. J. D. Powell. “A Rapidly Convergent Descent Method for Minimization.” Computer Journal, Vol. 6, 1963, pp. 163–168.

[8] Goldfarb, D. “A Family of Variable Metric Updates Derived by Variational Means.” Mathematics of Computing, Vol. 24, 1970, pp. 23–26.

[9] Shanno, D. F. “Conditioning of Quasi-Newton Methods for Function Minimization.” Mathematics of Computing, Vol. 24, 1970, pp. 647–656.

Capacidades ampliadas

Introducido antes de R2006a