Computer-Experimente: Workflow
-
In vielen Naturwissenschaften stellt die Simulation eine ergänzende Zwischenstufe zwischen dem Experiment und der theoretischen Betrachtung dar. Aber wie sieht ein optimaler Workflow bei Computer-Experimenten aus? Es stellen sich folgende Probleme:
- Das Experiment muss, wie in den Wissenschaften üblich, so gut wie möglich reproduzierbar sein. Bei deterministischen Simulationen bedeutet dies: perfekt reproduzierbar.
- Der Arbeitsverlauf muss vollständig nachverfolgbar sein
- Das Experiment greift auf einen mehr oder weniger ausgefeilten Satz an Bibliotheken zurück; diese können sich natürlich im Verlauf der Zeit ändern
- Das Experiment selbst wird ständig geändert, um neue Erkenntnisse einzubeziehen. Eine aus der Softwareentwicklung bekannte Strategie für Projektmanagement einzusetzen ist hier nur bedingt möglich.
- Die Software kann Bugs enthalten, die gefixt werden müssen; betroffene Experimente müssen invalidiert oder überprüft werden.
- Das Ergebnis eines Experiments ist im Vorfeld nur ungenau bekannt, sonst würde man es nicht durchführen.Diese Anforderungen unterscheiden sich stark von denen Anwendungsorientierter Software. Gibt es hierzu etablierte Workflows oder gar ganze Frameworks?
-
Auf jeden fall ist man da bei Windows schon mal ganz bestimmt falsch!
Und sollte die Software z.B. mit C/C++ oder Java (gelte dann auch für die Sprache mit der die VM geschrieben wurde) geschrieben sein, dürften keine Variablen benutzt werden die Dezimalwerte in Exponenten abspeichern, sondern es müssten viel mehr kaufmänische benutzt werden.Des weiteren dürfte es auch keine Software sein, bei dennen es Routinen gibt, wo manche Berechnungen prioritäten pasiert sind. Manche Faktoren wären dann nämlich vom Computer selbst abhängig und das würde das Ergebnis verfälschen.
Es kann durchaus sein, dass es I/O Flaschenhals prinzipmäßig wirt.
Letzendes kommt es darauf an, was für (ein) Computer verwendet wird, und wie die Daten eingespeist werden. Es kann aber durchaus Sinn machen einen extra Linux oder Unix Kernel zu compilieren, der z.B. explizit das vehindert, was ich ganz oben beschrieben habe.
Wie kann man überprüfen ob die Simulation übereinstimmt mit dem Verhalten der eerdlichen Natur? Eigentlich nur dadurch, dass man zu nächst mehrere Tests macht, die man auch real ausführen kann.
-
Deine Vorschläge haben leider nichts mit dem Experiment-Workflow zu tun, und sind teilweise recht ... weltfremd. Fixed-Point numbers sind zum Beispiel wesentlich schlechter als floats.
Was ich suche habe sind unter anderem Tools wie http://neuralensemble.org/trac/sumatra , nur evtl mit Versionsnummern die nicht mit Null anfangen, und einer größeren Benutzerbasis. Und Meinungen zum Sinn dieser Tools.
-
Versionierung geht einfach mit SVN oder so. Vor Veröffentlichung wird die aktuelle Version dann in einen Branch gepackt und die Versionsnummer festgehalten(eventuell als Referenz im Paper?). Wenn es spätere Bugfixes geben sollte, kann einfach im Branch gefixt werden, während Verbesserungen des Modells im Trunk geschehen.
Wenn man viele externe Bibliotheken verwendet, und sich den Branchaufwand bei Änderungen nicht machen will: Experiment mit allen Abhängigkeiten in ein Archiv packen und als Gesamtpaket zum Download anbieten.
- Der Arbeitsverlauf muss vollständig nachverfolgbar sein
Da stimme ich dir aber nicht zu. Es muss nicht verfolgbar sein, was noch gemacht wurde. Nur das aktuell veröffentlichte Ergebnis muss reproduzierbar sein. Und für sich selbst ist wahrscheinlich ein ordentliches Textdokument besser. Eventuell einfach ein Ringbuch für die Aufzeichnungen, aber sowas sollte man eh führen.
-
oh man oh man. Wer es meint besser zu wissen ob wohl er falsch liegt, wird schon auf die schnauze fliegen. Wie oft hatten wir das jetzt schon mit den Variablen die die werte in Exponenten hin und bei ausgabe wieder zurückwandeln? Und jedes mal wenn es ein bestimmter Kommawert war, stimmte der Wert nicht mehr exakt überein, weil die Variable eben nur in Exponenten und nicht in Exponenten mit einer angehängten Addition gespeichert werden.