Our most immediate goal is to transfer some of the features of our old/abandoned program into this new one. This includes some basic/sensible features: reading the parameter settings for each run from a separate file, rather than changing the code of the program, and having a mechanism to neatly end the program and save the interim work when it's interrupted with a control-C.
There are also a couple of quite clever features specific to the issues our models raises. One is when to print interim reports on the model genome's status. Depending on the parameters being tested, runs can take anywhere from a few hundred to a hundred thousand or more cycles, with rapid change only at the beginning. Rather than printing reports at a fixed interval, we have the reports printed whenever the number of cycles increases by a specified percentage. This gives very frequent updates at the beginning of a run, and reports at increasingly long intervals as the number of cycles gets large.
The other clever feature is how the model decides that the evolving features of the genome have reached an equilibrium. This is checked by comparing the recent state of the genome (mean of some attribute in the most recent print interval) with the mean of the same attribute in the previous interval and over the whole run. By using the increasing print interval as the unit of measure, we get sensitivity appropriate to the rate of change.