Test de régression de modèles numériques chaotiques

10

Lorsque nous avons un modèle numérique qui représente un véritable système physique et qui présente le chaos (par exemple, les modèles de dynamique des fluides, les modèles climatiques), comment pouvons-nous savoir que le modèle fonctionne comme il se doit? Nous ne pouvons pas comparer directement deux ensembles de sorties de modèle, car même de petits changements dans les conditions initiales changeront considérablement les sorties de simulations individuelles. Nous ne pouvons pas comparer directement la sortie du modèle aux observations, car nous ne pouvons jamais connaître avec suffisamment de détails les conditions initiales des observations, et l'approximation numérique entraînerait de toute façon des différences mineures qui se propageraient à travers le système.

Cette question est en partie inspirée de la question de David Ketcheson sur les tests unitaires de code scientifique : je suis particulièrement intéressé par la façon dont les tests de régression pour de tels modèles pourraient être mis en œuvre. Si un changement mineur des conditions initiales peut conduire à des changements de sortie majeurs (qui peuvent tout de même être des représentations adéquates de la réalité), comment pouvons-nous séparer ces changements des changements causés par la modification des paramètres ou la mise en œuvre de nouvelles routines numériques?

rien101
la source

Réponses:

7

Dans de tels cas, vous ne pouvez comparer que les statistiques de votre solution: moyennes, moments supérieurs, flux de chaleur à travers la frontière et autres grandeurs intégrales. Jetez un coup d'œil à l'un des nombreux articles traitant des modèles de turbulence pour les équations de Navier-Stokes, par exemple: ils sont remplis à ras bord de tracés de spectres de puissance, d'entalpies, d'entropies, d'enstrophies et d'autres mots dont vous n'avez jamais entendu parler auparavant . Tous sont une certaine quantité intégrale du flux et ils sont comparés aux mêmes quantités intégrales calculées à partir d'autres simulations et / ou expériences.

Wolfgang Bangerth
la source
Connaissez-vous un bon exemple de papier? Serait un bon ajout à votre réponse.
naught101
Pas du haut de ma tête - je ne suis pas un modéliste de la turbulence. Je commencerais par quelques-uns des articles les plus récents de Tom Hughes, et je continuerais à partir de là.
Wolfgang Bangerth,
Je pense que c'est un bon exemple d'utilisation de statistiques sommaires pour déterminer le régime d'un système dynamique: "Inférence statistique pour les systèmes dynamiques écologiques non linéaires bruyants"
Jugurtha
4

Si votre code peut s'exécuter dans des régimes non chaotiques de votre problème sous-jacent, en particulier des régimes non chaotiques où vous pouvez utiliser la méthode des solutions fabriquées, vous devez écrire des tests de régression qui s'exécutent dans ces régimes même s'ils ne sont pas autrement intéressants pour vous. . Si ces tests échouent, vous savez immédiatement que quelque chose s'est mal passé dans vos dernières modifications de code. Ensuite, vous pouvez passer à des problèmes plus pertinents physiquement.

Bill Barth
la source
Je ne pense pas que des modèles climatiques entiers puissent être exécutés de cette façon, mais peut-être que des composants majeurs le pourraient. Quelque chose comme un test super-unité. Bonne idée.
naught101
2
Mais c'est le point. Vos tests de régression doivent avoir une bonne couverture de code (gcov et autres sont vos amis) et doivent s'exécuter rapidement. Si vous utilisez un modèle climatique complet comme test de régression quotidien, je pense que vous perdez beaucoup de temps.
Bill Barth
Je pense que je pensais plus dans le sens de: vous exécutez le test au départ, puis stockez un tas de métriques (comme mentionné dans la réponse de Wolfgang). Ensuite, vous apportez des modifications, exécutez à nouveau les tests et comparez les mêmes mesures à celles que vous avez stockées la dernière fois. Si vous avez amélioré le modèle (ou le super-composant du modèle), alors en théorie, les mesures devraient toutes s'améliorer, ou du moins ne pas s'aggraver de façon spectaculaire (sauf si vous étiez trop ajusté auparavant, ou quelque chose, mais vous pouvez prendre cette décision de manière subjective) . Je suppose que les tests dans ce sens sont beaucoup plus qualitatifs, mais ils pourraient toujours être très utiles.
naught101
Comme discuté dans cette réponse , je suppose.
naught101
2

Tout d'abord, je vais me concentrer sur votre dernière phrase, car vous touchez à différentes choses dans votre question, mais je pense qu'elle rend bien compte de ce que vous demandez. Si vous modifiez des routines numériques, vous ne devez pas modifier les conditions initiales ou les paramètres système avant d'avoir validé la nouvelle routine par rapport à l'ancienne. Au niveau le plus faible, je vois cela comme la comparaison de certaines valeurs de moyenne temporelle sur votre solution, et elles étant d'accord (même si les comportements transitoires divergeaient les uns des autres dans le chaos). Au niveau le plus fort, vous vous attendriez à ce que les deux routines reproduisent le comportement transitoire complet. Laquelle de celles-ci vous voulez et celle qui est acceptable dépend des questions que vous posez et des conclusions que vous tirez des solutions.

Quant à savoir si un modèle "fonctionne comme il se doit", c'est une question entièrement différente. Cela n'a rien à voir avec les routines numériques que vous choisissez. Comment vous construisez votre modèle, de vos hypothèses simplificatrices à vos mesures / calculs de paramètres, vous devriez baser toutes vos décisions sur la physique du problème et, espérons-le, des travaux antérieurs effectués sur des cas similaires. Vous pouvez peut-être valider un modèle avec un cas simple reproduit dans un environnement de laboratoire, mais il y a des moments où même cela n'est pas anodin. Si vous ne pouvez pas déterminer un paramètre système important dans un ordre de grandeur, vous ne pouvez pas vous attendre à ce que quiconque fasse confiance aux petits détails que vous calculez dans le comportement local transitoire.

Godric Seer
la source