Removed interp() method by collapsing it into operator().
Improved interp() method so that it no longer gives negative values as results and so that it doesn't errantly wander past the end of genes[].
Asserts to this effect
Temporarily disabled -DNDEBUG flag
Changed output of genes for cleaner, more compact formatting
Added a commented out chunk of code showing a cauchy distribution. This seems to get the system to high-yield values in a smaller number of generations
Since the evolutionary search seems to be going well, we are no longer hard-coding annuality or perenniality and thus don't need to save the systems in the NOTES.
Added a note about how random numbers are generated in the genes
Realized that the way random numbers were being handled by the Gene class meant that seeds were being inherited through the breeding process.
The result of this would be that multiple parts of the state space could be explored repeatedly or, at the least, that it would be difficult to prove the correctness of the numbers being generated.
Accordingly, a new PRNG singleton class has been generated which offers a global class-call prng().
This call returns a implicit reference to a thread-specific PRNG engine allowing for safe multi-threading of random numbers.
Gene class has been modified to take this into account.
Flaw in the coding which prevented mutations in multi-year genomes has been resolved.
Separate header elements from implementation elements in prng_class.
Improved seeding so that start seeds of threads will not be the same.