Todos los algoritmos |
Algorithm
| Escoja entre 'trust-region-reflective' (opción predeterminada), 'levenberg-marquardt' y 'interior-point' . La opción Algorithm especifica una preferencia sobre qué algoritmo utilizar. Se trata únicamente de una preferencia, ya que se deben cumplir ciertas condiciones para utilizar cada uno de los algoritmos. Para el algoritmo trust-region-reflective, el número elementos de F devuelto por fun debe ser, al menos, igual a la longitud de x . El algoritmo 'interior-point' es el único algoritmo que puede resolver problemas con restricciones lineales o no lineales. Si incluye estas restricciones en su problema y no especifica un algoritmo, el solver cambia automáticamente al algoritmo 'interior-point' . El algoritmo 'interior-point' llama a una versión modificada del algoritmo fmincon 'interior-point' . Para obtener más información sobre cómo elegir el algoritmo, consulte Seleccionar el algoritmo. |
CheckGradients | Compare las derivadas proporcionadas por el usuario (gradientes de objetivo o de restricciones) con las derivadas de diferencias finitas. Las opciones son false (predeterminada) o true . Para optimset , el nombre es DerivativeCheck y los valores son 'on' u 'off' . Consulte Nombres de opciones actuales y antiguos. La opción CheckGradients se eliminará en una versión futura. Para comprobar las derivadas, utilice la función checkGradients . |
Diagnóstico | Muestre información de diagnóstico sobre la función que se desea minimizar o resolver. Las opciones son 'off' (predeterminada) o 'on' . |
DiffMaxChange | Cambio máximo en variables para gradientes de diferencias finitas (un escalar positivo). La opción predeterminada es Inf . |
DiffMinChange | Cambio mínimo en variables para gradientes de diferencias finitas (un escalar positivo). La opción predeterminada es 0 . |
Display
| Nivel de visualización (consulte Visualización iterativa):
'off' o 'none' no muestran salida alguna.
'iter' muestra la salida en cada iteración y emite el mensaje de salida predeterminado.
'iter-detailed' muestra la salida en cada iteración y emite el mensaje de salida técnico.
'final' (opción predeterminada) solo muestra la salida final y emite el mensaje de salida predeterminado.
'final-detailed' solo muestra la salida final y emite el mensaje de salida técnico.
|
FiniteDifferenceStepSize | Factor de tamaño de paso de escalar o vector para diferencias finitas. Cuando establece FiniteDifferenceStepSize en un vector v , las diferencias finitas progresivas delta son delta = v.*sign′(x).*max(abs(x),TypicalX);
, donde sign′(x) = sign(x) excepto sign′(0) = 1 . Las diferencias finitas centrales sondelta = v.*max(abs(x),TypicalX);
Un escalar FiniteDifferenceStepSize se expande a un vector. La opción predeterminada es sqrt(eps) para diferencias finitas progresivas y eps^(1/3) para diferencias finitas centrales. Para optimset , el nombre es FinDiffRelStep . Consulte Nombres de opciones actuales y antiguos. |
FiniteDifferenceType | Las diferencias finitas, utilizadas para estimar gradientes, son o bien 'forward' (opción predeterminada), o bien 'central' (centradas). La opción 'central' requiere el doble de evaluaciones de función, pero debería ser más precisa. El algoritmo respeta escrupulosamente los límites cuando estima ambos tipos de diferencias finitas. De este modo, por ejemplo, podrá seleccionar una diferencia regresiva en lugar de progresiva para evitar realizar la evaluación en un punto fuera de los límites. Para optimset , el nombre es FinDiffType . Consulte Nombres de opciones actuales y antiguos. |
FunctionTolerance
| Tolerancia de terminación en el valor de la función, un escalar positivo. La opción predeterminada es 1e-6 . Consulte Tolerancias y criterios de detención. Para optimset , el nombre es TolFun . Consulte Nombres de opciones actuales y antiguos. |
FunValCheck | Compruebe si los valores de la función son válidos. 'on' muestra un error cuando la función devuelve un valor complex , Inf o NaN . La opción predeterminada 'off' no muestra ningún error. |
MaxFunctionEvaluations
| Número máximo de evaluaciones de función permitidas, un entero positivo. El valor predeterminado es 100*numberOfVariables para el algoritmo 'trust-region-reflective' , 200*numberOfVariables para el algoritmo 'levenberg-marquardt' y 3000 para el algoritmo 'interior-point' . Consulte Tolerancias y criterios de detención y Iteraciones y recuentos de la función. Para optimset , el nombre es MaxFunEvals . Consulte Nombres de opciones actuales y antiguos. |
MaxIterations
| Número máximo de iteraciones permitidas, un entero positivo. El valor predeterminado es 400 para los algoritmos 'trust-region-reflective' y 'levenberg-marquardt' , y 1000 para el algoritmo 'interior-point' . Consulte Tolerancias y criterios de detención y Iteraciones y recuentos de la función. Para optimset , el nombre es MaxIter . Consulte Nombres de opciones actuales y antiguos. |
OptimalityTolerance | Tolerancia de terminación en la optimalidad de primer orden (un escalar positivo). La opción predeterminada es 1e-6 . Consulte Medida de optimalidad de primer orden. Internamente, el algoritmo 'levenberg-marquardt' utiliza una tolerancia de optimalidad (criterio de detención) de 1e-4 veces la FunctionTolerance y no utiliza OptimalityTolerance . Para optimset , el nombre es TolFun . Consulte Nombres de opciones actuales y antiguos. |
OutputFcn | Especifique una o varias funciones definidas por el usuario a las que una función de optimización llame en cada iteración. Pase un identificador de función o un arreglo de celdas de identificadores de función. La opción predeterminada es ninguno ([] ). Consulte Sintaxis de función de salida y función de gráfica. |
PlotFcn
| Representa varias medidas de progreso mientras el algoritmo se ejecuta; seleccione una de las gráficas predefinidas o escriba la suya propia. Pase un nombre, un identificador de función o un arreglo de celdas de nombres o identificadores de función. Para funciones de gráfica personalizadas, pase identificadores de función. La opción predeterminada es ninguno ([] ):
'optimplotx' representa el punto actual.
'optimplotfunccount' representa el recuento de la función.
'optimplotfval' representa el valor de la función.
'optimplotresnorm' representa la norma de los valores residuales.
'optimplotstepsize' representa el tamaño de paso.
'optimplotfirstorderopt' representa la medida de optimalidad de primer orden.
Las funciones de gráfica personalizadas utilizan la misma sintaxis que las funciones de salida. Consulte Funciones de salida para Optimization Toolbox y Sintaxis de función de salida y función de gráfica. Para optimset , el nombre es PlotFcns . Consulte Nombres de opciones actuales y antiguos. |
SpecifyObjectiveGradient | Si false (opción predeterminada), el solver aproxima la matriz jacobiana utilizando diferencias finitas. Si true , el solver utiliza una matriz jacobiana definida por el usuario (definida en fun ) o información jacobiana (cuando se utiliza JacobMult ) para la función objetivo. Para optimset , el nombre es Jacobian y los valores son 'on' u 'off' . Consulte Nombres de opciones actuales y antiguos. |
StepTolerance
| Tolerancia de terminación en x , un escalar positivo. El valor predeterminado es 1e-6 para los algoritmos 'trust-region-reflective' y 'levenberg-marquardt' , y 1e-10 para el algoritmo 'interior-point' . Consulte Tolerancias y criterios de detención. Para optimset , el nombre es TolX . Consulte Nombres de opciones actuales y antiguos. |
TypicalX
| Valores x típicos. El número de elementos en TypicalX es igual al número de elementos en x0 , el punto de inicio. El valor predeterminado es ones(numberofvariables,1) . El solver utiliza TypicalX para escalar diferencias finitas para la estimación de gradientes. |
UseParallel | Cuando true , el solver estima gradientes en paralelo. Deshabilite la opción estableciéndola en la opción predeterminada, false . Consulte Computación paralela. |
Algoritmo trust-region-reflective |
JacobianMultiplyFcn | Función de multiplicación de matriz jacobiana, especificada como un identificador de función. Para problemas estructurados a gran escala, esta función calcula el producto de la matriz jacobiana J*Y , J'*Y o J'*(J*Y) sin formar J . Para lsqnonlin , la función tiene el formato donde Jinfo contiene los datos que ayudan a calcular J*Y (o J'*Y , o J'*(J*Y) ). Para lsqcurvefit , la función tiene el formato donde xdata son los datos pasados en el argumento xdata . Los datos Jinfo son el segundo argumento devuelto por la función objetivo fun : lsqnonlin pasa los datos Jinfo , Y , flag y, para lsqcurvefit , xdata , y la función jmfun calcula un resultado como se especifica a continuación. Y es una matriz cuyo tamaño depende del valor de flag . Deje que m especifique el número de componentes de la función objetivo fun y deje que n especifique el número de variables del problema en x . La matriz jacobiana es de tamaño m por n tal y como se describe en fun . La función jmfun devuelve uno de los siguientes resultados:
Si flag == 0 , entonces W = J'*(J*Y) e Y tiene el tamaño n por 2 . Si flag > 0 , entonces W = J*Y e Y tiene el tamaño n por 1 . Si flag < 0 , entonces W = J'*Y e Y tiene el tamaño m por 1 .
En cada caso, J no se forma explícitamente. El solver utiliza Jinfo para calcular las multiplicaciones. Consulte Pasar parámetros adicionales para obtener información sobre cómo proporcionar valores para cualquier parámetro adicional que jmfun necesite. Nota 'SpecifyObjectiveGradient' debe establecerse en true para que el solver pase Jinfo de fun a jmfun .
Consulte Minimization with Dense Structured Hessian, Linear Equalities y Jacobian Multiply Function with Linear Least Squares para ver ejemplos similares. Para optimset , el nombre es JacobMult . Consulte Nombres de opciones actuales y antiguos. |
JacobPattern | Patrón de dispersión de la matriz jacobiana para diferenciación finita. Establezca JacobPattern(i,j) = 1 cuando fun(i) dependa de x(j) . De lo contrario, establezca JacobPattern(i,j) = 0 . En otras palabras, establezca JacobPattern(i,j) = 1 cuando puede tener ∂fun(i) /∂x(j) ≠ 0. Utilice JacobPattern cuando no sea conveniente calcular la matriz jacobiana J en fun , aunque puede determinar (por ejemplo, inspeccionándolo) cuándo fun(i) depende de x(j) . El solver puede aproximar J mediante diferencias finitas dispersas cuando proporciona JacobPattern . Si la estructura es desconocida, no establezca JacobPattern . El comportamiento predeterminado es como si JacobPattern fuera una matriz densa de unos. Entonces, el solver calcula una aproximación completa de diferencias finitas en cada iteración. Esto puede ser costoso para problemas grandes, por lo que normalmente es mejor determinar la estructura de dispersión. |
MaxPCGIter | Número máximo de iteraciones PCG (gradiente conjugado precondicionado), un escalar positivo. La opción predeterminada es max(1,numberOfVariables/2) . Para obtener más información, consulte Mínimos cuadrados no lineales a gran escala. |
PrecondBandWidth | Ancho de banda superior del precondicionador para PCG, un entero no negativo. La opción predeterminada de PrecondBandWidth es Inf , lo que implica que se utiliza una factorización directa (Cholesky) en lugar de los gradientes conjugados (CG). La factorización directa es más costosa computacionalmente que CG, pero produce un paso de mejor calidad hacia la solución. Establezca PrecondBandWidth en 0 para precondicionamiento diagonal (ancho de banda superior de 0). Para algunos problemas, un ancho de banda intermedio reduce el número de iteraciones PCG. |
SubproblemAlgorithm | Determina cómo se calcula el paso de iteración. La opción predeterminada, 'factorization' , realiza un paso más lento, pero más preciso que 'cg' . Consulte Mínimos cuadrados trust-region-reflective. |
TolPCG | Tolerancia de terminación en la iteración PCG, un escalar positivo. La opción predeterminada es 0.1 . |
Algoritmo Levenberg-Marquardt |
InitDamping | Valor inicial del parámetro de Levenberg-Marquardt, un escalar positivo. La opción predeterminada es 1e-2 . Para obtener más detalles, consulte Método de Levenberg-Marquardt. |
ScaleProblem | 'jacobian' puede, en ocasiones, mejorar la convergencia de un problema que no esté bien escalado; la opción predeterminada es 'none' .
|
Algoritmo interior-point |
BarrierParamUpdate | Especifica cómo fmincon actualiza el parámetro de barrera (consulte Algoritmo interior-point de fmincon). Las opciones son: Esta opción puede afectar a la velocidad y la convergencia del solver, pero su efecto no es fácil de predecir. |
ConstraintTolerance | Tolerancia en la vulneración de restricciones, un escalar positivo. La opción predeterminada es 1e-6 . Consulte Tolerancias y criterios de detención. Para optimset , el nombre es TolCon . Consulte Nombres de opciones actuales y antiguos. |
InitBarrierParam | Valor de barrera inicial, un escalar positivo. En ocasiones puede resultar útil probar un valor superior al valor predeterminado 0.1 , sobre todo si las funciones objetivo o de restricción son grandes. |
SpecifyConstraintGradient | Gradiente para las funciones de restricción no lineales definidas por el usuario. Si se establece en el valor predeterminado, false , lsqnonlin estima los gradientes de las restricciones no lineales mediante diferencias finitas. Si se establece en true , lsqnonlin prevé que la función de restricción tenga cuatro salidas, según se describe en nonlcon . Para optimset , el nombre es GradConstr y los valores son 'on' u 'off' . Consulte Nombres de opciones actuales y antiguos. |
SubproblemAlgorithm | Determina cómo se calcula el paso de iteración. El valor predeterminado, 'factorization' , suele ser más rápido que 'cg' (gradiente conjugado), aunque 'cg' puede ser más rápido para problemas grandes con matrices hessianas densas. Consulte Algoritmo interior-point de fmincon. Para optimset , los valores posibles son 'cg' y 'ldl-factorization' . Consulte Nombres de opciones actuales y antiguos. |