Pruebas de regresión de modelos numéricos caóticos.

10

Cuando tenemos un modelo numérico que representa un sistema físico real, y que exhibe caos (por ejemplo, modelos de dinámica de fluidos, modelos climáticos), ¿cómo podemos saber que el modelo está funcionando como debería? No podemos comparar dos conjuntos de resultados del modelo directamente, porque incluso pequeños cambios en las condiciones iniciales cambiarán drásticamente los resultados de las simulaciones individuales. No podemos comparar el resultado del modelo directamente con las observaciones, ya que nunca podemos conocer con suficiente detalle las condiciones iniciales de las observaciones, y la aproximación numérica de todos modos causaría pequeñas diferencias que se propagarían a través del sistema.

Esta pregunta está inspirada en parte por la pregunta de David Ketcheson sobre el código científico de pruebas unitarias : estoy particularmente interesado en cómo podrían implementarse las pruebas de regresión para tales modelos. Si un cambio menor en las condiciones iniciales puede conducir a cambios importantes en la producción (que bien pueden ser representaciones adecuadas de la realidad), entonces, ¿cómo podemos separar esos cambios de los cambios causados ​​por la modificación de parámetros o la implementación de nuevas rutinas numéricas?

nada101
fuente

Respuestas:

7

Todo lo que puede comparar en tales casos son las estadísticas de su solución: promedios, momentos más altos, flujos de calor a través del límite y otras cantidades integrales. Eche un vistazo a uno de los muchos documentos que discuten los modelos de turbulencia para las ecuaciones de Navier-Stokes, por ejemplo: están llenos hasta el borde con tramas de espectros de poder, entalpies, entropías, enstrofías y otras palabras de las que nunca antes había oído hablar. . Todos son una cantidad integral del flujo y se comparan con las mismas cantidades integrales calculadas a partir de otras simulaciones y / o experimentos.

Wolfgang Bangerth
fuente
¿Conoces un buen ejemplo de papel? Sería una buena adición a su respuesta.
nada101
No está fuera de mi cabeza, no soy una persona que modele turbulencias. Sin embargo, comenzaría con algunos de los documentos más recientes de Tom Hughes y trabajaría desde allí.
Wolfgang Bangerth
Creo que este es un buen ejemplo del uso de estadísticas resumidas para determinar el régimen de un sistema dinámico: "Inferencia estadística para sistemas dinámicos ecológicos no lineales ruidosos"
Jugurtha
4

Si su código puede ejecutarse en regímenes no caóticos de su problema subyacente, especialmente en regímenes no caóticos en los que puede utilizar el método de soluciones fabricadas, debe escribir pruebas de regresión que se ejecuten en estos regímenes incluso si no le resultan interesantes. . Si estas pruebas fallan, inmediatamente sabrá que algo salió mal en sus últimos cambios de código. Entonces puede pasar a problemas más relevantes físicamente.

Bill Barth
fuente
No creo que los modelos climáticos completos se puedan ejecutar de esta manera, pero quizás los componentes principales sí. Algo así como una prueba de superunidad. Buena idea.
nada101
2
Pero ese es el punto. Sus pruebas de regresión deben tener una buena cobertura de código (gcov y similares son sus amigos) y deben ejecutarse rápidamente. Si está ejecutando un modelo climático completo como prueba de regresión diaria, sospecho que está perdiendo mucho tiempo.
Bill Barth el
Creo que estaba pensando más en la línea de: ejecuta la prueba inicialmente y luego almacena un montón de métricas (como se menciona en la respuesta de Wolfgang). Luego realiza cambios, ejecuta las pruebas nuevamente y compara las mismas métricas con las que almacenó la última vez. Si ha mejorado el modelo (o el supercomponente del modelo), entonces, en teoría, las métricas deberían mejorar, o al menos no empeorar drásticamente (a menos que haya ajustado demasiado antes, o algo así, pero puede tomar esa decisión subjetivamente) . Supongo que las pruebas en este sentido son mucho más cualitativas, pero aún podrían ser muy útiles.
naught101
Como se discutió en esta respuesta , supongo.
naught101
2

Primero, me enfocaré en tu última oración, mientras tocas algunas cosas diferentes en tu pregunta, pero siento que captura adecuadamente lo que estás preguntando. Si está cambiando las rutinas numéricas, no debería cambiar las condiciones iniciales o los parámetros del sistema hasta que haya validado la nueva rutina de la anterior. En el nivel más débil, veo que esto compara algunos valores promediados en el tiempo sobre su solución, y que están de acuerdo (incluso si los comportamientos transitorios divergieron entre sí dentro del caos). En el nivel más fuerte, esperaría que las dos rutinas reproduzcan el comportamiento transitorio completo. Cuál de estos desea y cuál es aceptable depende de las preguntas que haga y de las conclusiones que extraiga de las soluciones.

En cuanto a saber si un modelo está "funcionando como debería", esa es una pregunta completamente diferente. Esto no tiene nada que ver con las rutinas numéricas que elija. Cómo construye su modelo, desde sus supuestos simplificadores hasta sus mediciones / cálculos de parámetros, debe basar todas sus decisiones en la física del problema y, con suerte, realizar un trabajo previo en casos similares. Es posible que pueda validar un modelo con un caso simple reproducido en un entorno de laboratorio, pero hay momentos en que incluso eso no es trivial. Si no puede determinar un parámetro importante del sistema dentro de un orden de magnitud, no puede esperar que nadie confíe en los pequeños detalles que está calculando en el comportamiento local transitorio.

Vidente de Godric
fuente