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.

Optimización de una ecuación de simulación o diferencial ordinaria

¿Qué es la optimización de una simulación o ODE?

A veces, la función objetiva o los valores de función de restricción no lineal solo están disponibles mediante simulación o mediante una solución numérica de una ecuación diferencial ordinaria (ODE). Estos problemas de optimización tienen varias características y desafíos comunes, discutidos en.Posibles problemas y soluciones

Para optimizar un modelo fácilmente, pruebe a usarSimulink® SimulinkDesign Optimization™.

Posibles problemas y soluciones

Problemas en las diferencias finitas

los solucionadores utilizan internamente los derivados de funciones objetivas y de restricción.Optimization Toolbox™ De forma predeterminada, estiman estos derivados utilizando aproximaciones de diferencias finitas de la forma

F(x+δ)F(x)δ

O

F(x+δ)F(xδ)2δ.

Estas aproximaciones de diferencias finitas pueden ser inexactas porque:

  • Un gran valor de permite que más no linealidad afecte a la diferencia finita.δ

  • Un pequeño valor de conduce a la inexactitud debido a la precisión limitada en Numerics.δ

Específicamente, para simulaciones y soluciones numéricas de ODEs:

  • Las simulaciones son a menudo insensibles a pequeños cambios en los parámetros. Esto significa que si se utiliza una perturbación demasiado pequeña, la simulación puede devolver un derivado no esencial estimado de 0.δ

  • Tanto las simulaciones como las soluciones numéricas de ODEs pueden tener inexactitudes en sus evaluaciones de funciones. Estas inexactitudes se pueden amplificar en aproximaciones de diferencia finita.

  • La solución numérica de ODEs introduce ruido en valores mucho mayores que la precisión de la máquina. Este ruido se puede amplificar en aproximaciones de diferencia finita.

  • Si un solucionador de ODE utiliza tamaños de paso variables, a veces el número de pasos ODE en la evaluación de (+) puede diferir del número de pasos en la evaluación de ().FxδFx Esta diferencia puede conducir a una diferencia espuria en los valores devueltos, dando una estimación engañosa de la derivada.

Sugerencias de diferencias finitas

Evite las diferencias finitas mediante la búsqueda directa.  Si tiene un Global Optimization Toolbox licencia, puede intentar usarla como solucionador. no intenta estimar los degradados, por lo que no sufre de las limitaciones en.patternsearchpatternsearchProblemas en las diferencias finitas

Si utiliza para evaluaciones de funciones costosas (que consumen mucho tiempo), utilice la opción:patternsearchCache

options = optimoptions('patternsearch','Cache','on');

Si no puede usar y tiene un problema de minimización sin restricciones relativamente bajo de dimensiones, pruebe en su lugar. no utiliza diferencias finitas.patternsearchfminsearchfminsearch Sin embargo, no es un solucionador rápido o sintonible.fminsearch

Establecer diferencias finitas mayores.  A veces puede evitar los problemas al tomar pasos de diferencia finita más grandes que el valor predeterminado.Problemas en las diferencias finitas

  • Si tiene R2011b o posterior, establezca una opción de tamaño de paso de diferencia finita en un valor mayor que el predeterminado o, por ejemplo:MATLAB®sqrt(eps)eps^(1/3)

    • Para R2011b – R2012b:

      options = optimset('FinDiffRelStep',1e-3);
    • Para R2013a – R2015b y un solucionador denominado:'solvername'

      options = optimoptions('solvername','FinDiffRelStep',1e-3);
    • Para R2016a en adelante y un solucionador llamado:'solvername'

      options = optimoptions('solvername','FiniteDifferenceStepSize',1e-3);

    Si tiene diferentes escalas en diferentes componentes, establezca el tamaño del paso de la diferencia finita en un vector proporcional a las escalas del componente.

  • Si tiene R2011a o anterior, establezca la opción en un valor mayor que el predeterminado y, posiblemente, establezca también la opción, como:MATLABDiffMinChange1e-8DiffMaxChange

    options = optimset('DiffMinChange',1e-3,'DiffMaxChange',1);

Nota

Es difícil saber cómo establecer estos tamaños de diferencia finita.

También puede intentar establecer diferencias finitas centrales:

options = optimoptions('solvername','FiniteDifferenceType','central');

Utilice una función de evaluación de degradado.  Para evitar los problemas de estimación de diferencias finitas, puede dar una función de degradado aproximada en sus restricciones objetivas y no lineales. Recuerde establecer la opción de usar y, si es relevante, también establecer la opción.SpecifyObjectiveGradienttrueoptimoptionsSpecifyConstraintGradienttrue

  • Para algunos ODEs, puede evaluar el degradado numéricamente al mismo tiempo que resuelve el ODE. Por ejemplo, supongamos que la ecuación diferencial para la función objetiva (,) esztx

    ddtz(t,x)=G(z,t,x),

    donde está el vector de parámetros sobre el que se minimiza.x Supongamos que es un escalar.x Entonces la ecuación diferencial para su derivado,y

    y(t,x)=ddxz(t,x)

    Es

    ddty(t,x)=G(z,t,x)zy(t,x)+G(z,t,x)x,

    donde (,) es la solución de la función objetiva ODE.ztx Puede resolver (,) en el mismo sistema de ecuaciones diferenciales que (,).ytxztx Esta solución le da un derivado aproximado sin tomar nunca diferencias finitas. Para no escalar, resuelva un ODE por componente.x

    Para los aspectos teóricos y computacionales de este método, véase Leis y Kramer.[2] Para la experiencia computacional con este y los métodos de diferencia finita, véase la figura 7 de raue et al. .[3]

  • Para algunas simulaciones, puede estimar un derivado dentro de la simulación. Por ejemplo, la técnica de ratio de verosimilitud descrita en Reiman y Weiss o la técnica de análisis de perturbaciones infinitesimales analizada en Heidelberger, Cao, Zazanis y Suri estiman derivados en la misma simulación que estima el objetivo o funciones de restricción.[4][1]

Utilice tolerancias ODE más ajustadas.  Puede usar para establecer las tolerancias de solucionador de ODE en valores por debajo de los predeterminados.odesetAbsTolRelTol Sin embargo, la elección de una tolerancia demasiado pequeña puede provocar soluciones lentas, un error de convergencia u otros problemas. Nunca elija una tolerancia menor que para.1e-9RelTol El límite inferior de cada componente depende de la escala de su problema, por lo que no hay ningún Consejo.AbsTol

Problemas en las funciones estocásticas

Si una simulación utiliza números aleatorios, la evaluación de un objetivo o una función de restricción dos veces puede devolver resultados diferentes. Esto afecta tanto la estimación de funciones como la estimación de diferencias finitas. El valor de una diferencia finita podría estar dominado por la variación debido a la aleatoriedad, en lugar de la variación debido a diferentes puntos de evaluación y +.xxδ

Sugerencias para funciones estocásticas

Si la simulación utiliza números aleatorios de una secuencia que controle, restablezca la secuencia aleatoria antes de cada evaluación de las funciones de objetivo o restricción. Esta práctica puede reducir la variabilidad en los resultados. Por ejemplo, en una función objetiva:

function f = mysimulation(x) rng default % or any other resetting method ... end

Para obtener más información, consulte.Genere números aleatorios que sean repetibles (MATLAB)

Cálculo común de objetivos y restricciones

Con frecuencia, una simulación evalúa tanto la función objetiva como las restricciones durante la misma ejecución de simulación. O, las funciones de restricción objetiva y no lineal utilizan el mismo cálculo costoso. Solucionadores, como por separado, evalúan la función objetiva y las funciones de restricción no lineal.fmincon Esto puede conducir a una gran pérdida de eficiencia, porque el solucionador llama a la costosa computación dos veces. Para evitar este problema, utilice la técnica en, o, cuando se utiliza el enfoque basado en problemas,.Las restricciones objetivas y no lineales en la misma funciónObjetivo y restricciones tener una función común en serie o paralela, basada en problemas

Error en la evaluación de función objetiva o de restricción

La simulación o ODE puede fallar para algunos valores de parámetro.

Sugerencias para errores de evaluación

Establecer límites apropiados.  Aunque es posible que no conozca todas las limitaciones en el espacio de parámetros, intente establecer los límites apropiados en todos los parámetros, tanto superiores como inferiores. Esto puede acelerar la optimización y puede ayudar al solucionador a evitar los valores de parámetros problemáticos.

Utilice un Solver que respete los límites.  Como se describe en, algunos algoritmos pueden violar restricciones enlazadas en iteraciones intermedias.Las iteraciones pueden violar restricciones Para optimizar simulaciones y ODEs, utilice algoritmos que siempre obedecen a restricciones enlazadas. Ver.Algoritmos que satisfacen las restricciones enlazadas

Devuelva NaN.  Si la simulación o el solucionador de ODE no evalúa correctamente una función de restricción objetiva o no lineal en un punto, haga que la función devuelva.xNaN La mayoría yOptimization Toolbox Global Optimization Toolbox los solucionadores tienen la robustez para intentar un paso iterativo diferente si encuentran un valor.NaN Estos robustos solucionadores incluyen:

  • , y algoritmosfminconinterior-pointsqptrust-region-reflective

  • fminunc

  • lsqcurvefit

  • lsqnonlin

  • patternsearch

Algunas personas se sienten tentadas a devolver un valor arbitrario de función objetiva grande en un punto fallido, inviable u otro mal. Sin embargo, esta práctica puede confundir a un solucionador, porque el solucionador no se da cuenta de que el valor devuelto es arbitrario. Al volver, el solucionador puede intentar evaluar en un punto diferente.NaN

Bibliografía

[1] Heidelberger, P., X.-R. Cao, M. A. Zazanis, and R. Suri. Convergence properties of infinitesimal perturbation analysis estimates. Management Science 34, No. 11, pp. 1281–1302, 1988.

[2] Leis, J. R. and Kramer, M.A. The Simultaneous Solution and Sensitivity Analysis of Systems Described by Ordinary Differential Equations. ACM Trans. Mathematical Software, Vol. 14, No. 1, pp. 45–60, 1988.

[3] Raue, A. et al. Lessons Learned from Quantitative Dynamical Modeling in Systems Biology. Available at http://www.plosone.org/article/info:doi/10.1371/journal.pone.0074335, 2013.

[4] Reiman, M. I. and A. Weiss. Sensitivity analysis via likelihood ratios. Proc. 18th Winter Simulation Conference, ACM, New York, pp. 285–289, 1986.