Test di regressione di modelli numerici caotici


10

Quando abbiamo un modello numerico che rappresenta un vero sistema fisico e che mostra caos (ad esempio modelli fluidodinamici, modelli climatici), come possiamo sapere che il modello sta funzionando come dovrebbe? Non possiamo confrontare direttamente due serie di output del modello, perché anche piccoli cambiamenti nelle condizioni iniziali cambieranno drasticamente gli output delle singole simulazioni. Non possiamo confrontare l'output del modello direttamente con le osservazioni, perché non possiamo mai conoscere con sufficiente dettaglio le condizioni iniziali delle osservazioni, e l'approssimazione numerica provocherebbe comunque piccole differenze che si propagerebbero attraverso il sistema.

Questa domanda è in parte ispirata dalla domanda di David Ketcheson sul codice scientifico dei test unitari : sono particolarmente interessato a come implementare i test di regressione per tali modelli. Se un piccolo cambiamento delle condizioni iniziali può portare a grandi cambiamenti nell'output (che potrebbe anche essere rappresentazioni adeguate della realtà), allora come possiamo separare questi cambiamenti dai cambiamenti causati dalla modifica dei parametri o dall'implementazione di nuove routine numeriche?

Risposte:


7

Tutto ciò che puoi confrontare in questi casi sono le statistiche della tua soluzione: medie, momenti più alti, flussi di calore oltre il confine e altre quantità integrali. Dai un'occhiata a uno dei tanti articoli che parlano dei modelli di turbolenza per le equazioni di Navier-Stokes, per esempio: sono pieni di trame di spettri di potenza, entalpie, entropie, enstrophy e altre parole di cui non hai mai sentito parlare . Tutti sono una parte integrale del flusso e vengono confrontati con le stesse quantità integrali calcolate da altre simulazioni e / o esperimenti.


Conosci un buon documento di esempio? Sarebbe una buona aggiunta alla tua risposta.
nulla101

Non dalla parte superiore della mia testa - non sono una persona modellista di turbolenza. Vorrei iniziare con alcuni degli articoli più recenti di Tom Hughes, e lavorare da lì.
Wolfgang Bangerth,

Penso che questo sia un buon esempio dell'uso di statistiche riassuntive per determinare il regime di un sistema dinamico: "Inferenza statistica per sistemi dinamici ecologici non lineari rumorosi"
Jugurtha,

4

Se il codice può essere eseguito in regimi non caotici del problema sottostante, in particolare regimi non caotici in cui è possibile utilizzare il metodo delle soluzioni prodotte, è necessario scrivere test di regressione eseguiti in questi regimi anche se non sono altrimenti interessanti per te . Se questi test falliscono, allora sai immediatamente che qualcosa è andato storto nelle ultime modifiche al codice. Quindi puoi passare a problemi più rilevanti dal punto di vista fisico.


Non penso che interi modelli climatici potrebbero essere gestiti in questo modo, ma forse potrebbero esserlo componenti importanti. Qualcosa come un test di superunità. Bella idea
nulla101

2
Ma questo è il punto. I tuoi test di regressione dovrebbero avere una buona copertura del codice (gcov e simili sono i tuoi amici) e dovrebbero essere eseguiti rapidamente. Se stai eseguendo un intero modello climatico come test di regressione giornaliero, sospetto che stai perdendo molto tempo.
Bill Barth,

Penso che stavo pensando di più sulla falsariga di: esegui inizialmente il test e poi memorizzi un sacco di metriche (come menzionato nella risposta di Wolfgang). Quindi apportare modifiche, eseguire nuovamente i test e confrontare le stesse metriche con quelle archiviate l'ultima volta. Se hai migliorato il modello (o il supercomponente del modello), in teoria, le metriche dovrebbero tutti migliorare, o almeno non peggiorare in modo drammatico (a meno che non ti stia adattando troppo prima o qualcosa del genere, ma puoi prendere questa decisione soggettivamente) . Immagino che i test in questo senso siano molto più qualitativi, ma potrebbero comunque essere molto utili.
naught101,

Come discusso in questa risposta , suppongo.
naught101,

2

In primo luogo, mi concentrerò sulla tua ultima frase, mentre tocchi alcune cose diverse nella tua domanda, ma sento che cattura adeguatamente ciò che stai chiedendo. Se si stanno cambiando le routine numeriche, non si dovrebbero cambiare le condizioni iniziali o i parametri di sistema fino a quando non si sarà convalidata la nuova routine da quella precedente. A livello più debole, vedo questo come un confronto di alcuni valori medi nel tempo rispetto alla tua soluzione, e il fatto che siano in accordo (anche se i comportamenti transitori differivano l'uno dall'altro nel caos). Al livello più forte, ci si aspetterebbe che le due routine riproducano l'intero comportamento transitorio. Quale di questi desideri e quale è accettabile dipende dalle domande che stai ponendo e dalle conclusioni che stai traendo dalle soluzioni.

Per quanto riguarda dire se un modello sta "eseguendo come dovrebbe", questa è una domanda completamente diversa. Questo non ha nulla a che fare con le routine numeriche che scegli. Come costruisci il tuo modello, dalle tue ipotesi semplificative alle tue misurazioni / calcoli dei parametri, dovresti basare tutte le tue decisioni sulla fisica del problema e, auspicabilmente, il lavoro precedente fatto su casi simili. Potresti essere in grado di convalidare un modello con un semplice caso riprodotto in un ambiente di laboratorio, ma ci sono momenti in cui anche quello non è banale. Se non riesci a determinare un parametro di sistema importante entro un ordine di grandezza, non puoi aspettarti che nessuno si fidi dei piccoli dettagli che stai calcolando nel comportamento locale transitorio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.