Ich verwende C ++, um einige Dinge wissenschaftlich zu simulieren. In diesem Moment fand ich aufgrund der zunehmenden Anzahl von Parametern ein "Logbuch": eine Datei, in der alle Informationen über eine gegebene Simulation gespeichert sind (nicht die Ausgabe; die Parameter, die zu dieser Ausgabe führten und der jeweilige git commit ).
Ich habe gesucht und es scheint mir, dass die Verwendung von XML eine gute Option sein sollte, da es leicht mit Python, Mathematica oder anderen Analysesoftware analysiert werden kann.
Ich frage mich, ob jemand damit einverstanden ist oder eine bessere Option hat.
Außerdem frage ich mich, wie ich das aktuelle Commit von git auswählen kann, um es im Logbuch zu speichern.
Im Allgemeinen stimme ich Ihnen zu:
Das sollte ich hinzufügen, das Speicherformat hängt vom typischen Anwendungsfall ab, wenn Sie herausfinden müssen, warum jeden Montag nach Vollmond der Optimierer keine Lösungen finden kann, wird es schwer (na ja, härter) sein Erstelle den notwendigen XPath / XQuery-Hacker, um weil von der Nicht-Normativität deiner Struktur zu machen.
Nun, all die Schattenseiten, an die ich denken kann:
Wie für das zweite Bit: git describe --always HEAD
Die einfachste Option besteht darin, Ihr Programm zu einer reinen Funktion zu machen, d. h. alle sich ändernden und möglicherweise ändernden Parameter in Programmoptionen auszulagern, so dass eine Simulation vollständig durch die Optionen und eine git commit-Kennung spezifiziert wird.
Boost.Program_options hilft sehr bei der Implementierung eines solchen Schemas.
Das hört sich auf einer Programmierseite vielleicht merkwürdig an, aber ich habe mehrere Simulationsarbeiten gemacht, dass das beste Logbuch ... nun ... ein Logbuch war.
Insbesondere habe ich dieses ausführlich genutzt (Link zu Amazon). Es mag sein, dass ich aus einem nassen Labor / Biologie-Hintergrund kam, aber ich fand etwas Anziehendes an einem alten toten Baum-Notizbuch. Es ist zugegebenermaßen nicht automatisiert und wird nicht gut funktionieren, wenn Sie eine große Anzahl von verschiedenen Parameterkombinationen ausführen oder wenn Ihre Simulation eine große Anzahl von Parametern aufweist.
Aber für das Projekt, an dem ich gearbeitet habe, das ungefähr 20 Parameter hat, die variieren könnten, habe ich gerne Freiformnotizen über meine Gedanken aufnehmen können, sie in einer leicht tragbaren, leicht zu erinnernden und ziemlich dauerhaften Form haben, und für viele Kollegen Kollegen, "Keep a lab notebook" schien mit einer physischen Sache besser zu funktionieren.
Ihre Kilometerzahl kann natürlich variieren.
Die Welt der Teilchenphysik verwendet meist ROOT für die Datenerfassung, Speicherung und Analyse. Dies beinhaltet Daten aus der Simulation. ROOT macht es möglich - in der Tat einfach - einen vollständigen Satz von Metadaten zu behalten mit die Ergebnisse.
Wenn wir große Datenmengen haben, behalten wir auch eine Datenbank bei, aber das macht es bequem, Abfragen zu konstruieren: Die eigentliche Aufzeichnung erfolgt in den enthaltenen Metadaten.
Tags und Links c++ logging scientific-computing