Testowanie regresyjne chaotycznych modeli numerycznych

10

Kiedy mamy model numeryczny, który reprezentuje prawdziwy układ fizyczny i który wykazuje chaos (np. Modele dynamiki płynów, modele klimatu), skąd możemy wiedzieć, że model działa tak, jak powinien? Nie możemy bezpośrednio porównać dwóch zestawów danych wyjściowych modelu, ponieważ nawet niewielkie zmiany warunków początkowych radykalnie zmienią wyniki poszczególnych symulacji. Nie możemy porównywać wyników modelu bezpośrednio z obserwacjami, ponieważ nigdy nie możemy z wystarczającą szczegółowością poznać początkowych warunków obserwacji, a przybliżenie numeryczne i tak spowodowałoby niewielkie różnice, które rozprzestrzeniłyby się w systemie.

To pytanie jest częściowo zainspirowane pytaniem Davida Ketchesona dotyczącym testowania jednostkowego kodu naukowego : Jestem szczególnie zainteresowany tym, jak można przeprowadzić testy regresji dla takich modeli. Jeśli niewielka zmiana warunków początkowych może prowadzić do poważnych zmian wyników (które mogą być nadal odpowiednimi reprezentacjami rzeczywistości), to jak możemy oddzielić te zmiany od zmian spowodowanych modyfikacją parametrów lub wdrożeniem nowych procedur numerycznych?

naught101
źródło

Odpowiedzi:

7

W takich przypadkach można jedynie porównać statystyki swojego rozwiązania: średnie, wyższe momenty, strumienie ciepła przez granicę i inne wielkości całkowite. Spójrz na jeden z wielu artykułów omawiających modele turbulencji dla równań Naviera-Stokesa, na przykład: są one wypełnione po brzegi wykresami widm mocy, entalpii, entropii, enstrofii i innymi słowami, o których nigdy wcześniej nie słyszałeś . Wszystkie są pewną całkowitą wielkością przepływu i są porównywane z tymi samymi wielkościami całkowitymi obliczonymi z innych symulacji i / lub eksperymentów.

Wolfgang Bangerth
źródło
Czy znasz dobry przykładowy artykuł? Byłby dobrym dodatkiem do twojej odpowiedzi.
naught101
Nie z czubka głowy - nie jestem osobą modelującą turbulencje. Zacznę jednak od niektórych najnowszych artykułów Toma Hughesa i zacznę od tego.
Wolfgang Bangerth
Myślę, że to dobry przykład wykorzystania statystyk podsumowujących do ustalenia reżimu systemu dynamicznego: „Wnioskowanie statystyczne dla hałaśliwych nieliniowych ekologicznych systemów dynamicznych”
Jugurtha,
4

Jeśli Twój kod może działać w nie chaotycznych reżimach leżących u podstaw problemu, szczególnie w nie chaotycznych reżimach, w których możesz użyć metody wytworzonych rozwiązań, powinieneś napisać testy regresji, które działają w tych reżimach, nawet jeśli nie są dla ciebie interesujące . Jeśli te testy zakończą się niepowodzeniem, od razu wiesz, że coś poszło nie tak w najnowszych zmianach kodu. Następnie możesz przejść do bardziej istotnych problemów fizycznych.

Bill Barth
źródło
Nie sądzę, aby w ten sposób można było uruchomić całe modele klimatu, ale być może mogłyby to być główne komponenty. Coś jak test superjednostkowy. Dobry pomysł.
naught101
2
Ale o to chodzi. Twoje testy regresji powinny mieć dobre pokrycie kodu (gcov i tym podobne są twoimi przyjaciółmi) i powinny przebiegać szybko. Jeśli używasz całego modelu klimatu jako codziennego testu regresji, podejrzewam, że marnujesz dużo czasu.
Bill Barth
Wydaje mi się, że myślałem bardziej w następujący sposób: najpierw przeprowadzasz test, a potem przechowujesz kilka wskaźników (jak wspomniano w odpowiedzi Wolfganga). Następnie dokonujesz zmian, ponownie uruchamiasz testy i porównujesz te same dane z danymi zapisanymi ostatnio. Jeśli ulepszyłeś model (lub superkomponent modelu), to teoretycznie wszystkie wskaźniki powinny się poprawić, a przynajmniej nie pogorszyć dramatycznie (chyba że wcześniej byłeś nadmiernie dopasowany lub coś, ale możesz podjąć decyzję subiektywnie) . Sądzę, że testy w tym sensie są o wiele bardziej jakościowe, ale wciąż mogą być bardzo przydatne.
naught101
Jak omówiono w tej odpowiedzi , jak sądzę.
naught101
2

Po pierwsze, skupię się na twoim ostatnim zdaniu, kiedy dotkniesz kilku różnych rzeczy w twoim pytaniu, ale czuję, że odpowiednio oddaje to, o co pytasz. Jeśli zmieniasz procedury numeryczne, nie powinieneś zmieniać warunków początkowych ani parametrów systemowych, dopóki nie zweryfikujesz nowej procedury ze starej. Na najsłabszym poziomie postrzegam to jako porównywanie wartości uśrednionych w czasie z twoim rozwiązaniem, i są one zgodne (nawet jeśli przejściowe zachowania rozchodzą się w chaosie). Na najsilniejszym poziomie można oczekiwać, że te dwie procedury odtworzą pełne zachowanie przejściowe. Które z nich chcesz, a które jest do przyjęcia, zależy od tego, jakie pytania zadajesz i jakie wnioski wyciągasz z rozwiązań.

Jeśli chodzi o stwierdzenie, czy model „działa tak, jak powinien”, jest to zupełnie inne pytanie. Nie ma to nic wspólnego z wybranymi procedurami numerycznymi. Jak budujesz swój model, od upraszczających założeń po pomiary / obliczenia parametrów, powinieneś opierać wszystkie swoje decyzje na fizyce problemu, i mam nadzieję, że wcześniejsze prace zostały wykonane na podobnych przypadkach. Możesz być w stanie zweryfikować model z prostą kopertą odtworzoną w warunkach laboratoryjnych, ale są chwile, kiedy nawet to nie jest trywialne. Jeśli nie możesz określić ważnego parametru systemowego z dokładnością do rzędu wielkości, nie możesz oczekiwać od nikogo zaufania do drobnych szczegółów, które obliczasz w przejściowym zachowaniu lokalnym.

Godric Seer
źródło