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.

Solver lleva demasiado tiempo

Los solucionadores pueden tomar un tiempo excesivo por varias razones. Para diagnosticar el motivo o habilitar una solución más rápida, utilice una o varias de las siguientes técnicas.

Habilitar visualización iterativa

Establezca la opción en.Display'iter' Esta configuración muestra los resultados de las iteraciones del solucionador.

Para habilitar la visualización iterativa:

  • Con la aplicación de optimización, elija serLevel of display iterative O iterative with detailed message.

  • En la línea de comando, escribaMATLAB®

    options = optimoptions('solvername','Display','iter');

    Llame al solucionador mediante la estructura.options

Para ver un ejemplo de visualización iterativa, consulte.Interprete el resultado Para obtener más información, consulte.Qué buscar en la pantalla iterativa

Utilice tolerancias apropiadas

Los solucionadores pueden fallar al converger si las tolerancias son demasiado pequeñas, especialmente y.OptimalityToleranceStepTolerance

Para cambiar las tolerancias mediante la aplicación de optimización, use la lista en la parte superior del panel.Stopping criteriaOptions

Para cambiar las tolerancias en la línea de comando, utilice como se describe en.optimoptionsEstablecer y cambiar opciones

Utilice una función de trazado

Puede obtener más información visual o detallada sobre las iteraciones del solucionador utilizando una función de trazado. Para obtener una lista de las funciones de trazado predefinidas, consulte en la aplicación optimización.Options > Plot functions La sección Opciones de las páginas de referencia de la función del solucionador también enumera las funciones de trazado.

Para utilizar una función de trazado:

  • Con la aplicación de optimización, marque las casillas situadas junto a cada función de trazado que desee utilizar.

  • En la línea de comando, escribaMATLAB

    options = optimoptions('solvername','PlotFcn',{@plotfcn1,@plotfcn2,...});

    Llame al solucionador mediante la estructura.options

Para obtener un ejemplo del uso de una función de trazado, consulte.Mediante una función de trazado

Utilice la opción'lbfgs' HessianApproximation

Para el solucionador, si tiene un problema con muchas variables (cientos o más), a menudo puede ahorrar tiempo y memoria estableciendo la opción.fminconHessianApproximation'lbfgs' Esto hace que el algoritmo utilice una aproximación hessiana de baja memoria.fmincon'interior-point'

Habilite Checkdegradados

Si ha suministrado derivados (degradados o Jacobianos) al solucionador, el solucionador puede no converger si los derivados son inexactos. Para obtener más información sobre el uso de la opción, consulte.CheckGradientsComprobación de la validez de gradientes o Jacobianos

Utilice inf en lugar de un tamaño grande, enlazado arbitrario

Si utiliza un límite grande y arbitrario (superior o inferior), un solucionador puede tardar demasiado tiempo o incluso no converger. Sin embargo, si establece o como el límite, el solucionador puede tardar menos tiempo y podría converger mejor.Inf-Inf

¿por qué? Un algoritmo de punto interior puede establecer un punto inicial en el punto medio de los límites finitos. O un algoritmo de punto interior puede intentar encontrar un "camino central" a medio camino entre los límites finitos. Por lo tanto, un límite grande y arbitrario puede cambiar el tamaño de esos componentes de forma inadecuada. Por el contrario, los límites infinitos se ignoran para estos fines.

Punto menor: Algunos solucionadores utilizan la memoria para cada restricción, principalmente a través de una restricción hessian. Establecer un enlace a o significa que no hay ninguna restricción, por lo que hay menos memoria en uso, porque una restricción hessian tiene menor dimensión.Inf-Inf

Utilice una función de salida

Puede obtener información detallada sobre las iteraciones del solucionador utilizando una función de salida. Solvers llama a funciones de salida en cada iteración. Las funciones de salida se escriben utilizando la sintaxis descrita en.Sintaxis de función de salida

Para obtener un ejemplo del uso de una función de salida, consulte.Ejemplo: uso de funciones de salida

Utilice un solucionador disperso o una función multiplicar

Los problemas grandes pueden causar el funcionamiento de la memoria o del tiempo.MATLAB Aquí hay algunas sugerencias para usar menos memoria:

Utilice la computación paralela

Si tiene una licencia, el solucionador podría ejecutarse más rápido con la computación paralela.Parallel Computing Toolbox™ Para obtener más información, consulte.Computación paralela