It’s like fishing.

I’m sitting on the edge of a binary ocean, casting hyperdimensional nets into the infinite waters of possible programs. My digital creatures, which I call “figures,” will run on my computer for hours, until I finally catch something.

Of late, I’ve been fishing for populations that can survive mutations. I’ll save a population after it has had a given number of mutations. I used to save them based on how many new figures they produced.

It had crossed my mind that keeping mutation off and allowing a population to learn how to reproduce first might be better. I even tested it, but the populations I used were miserable. That, and a few other things had me convinced that starting with stable populations that hadn’t been mutated from the beginning wouldn’t help, would in fact be disastrous and painful. It seemed best to stick with mutants, those populations that had experienced mutation from the very beginning instead. I wanted to make that point in my journal or here, but I wanted to be able to demonstrate it.

I made five populations norm0 through norm4. They were stopped and saved after making one million children. Once they were saved, I loaded them into the mutation resistance test.

The given population is loaded into memory.
Outer loop: while number of extinctions less 1000.
Restore population from memory
Inner loop: while population size greater 0
Run populations
track mutation
close inner loop:
close outer loop:

When a population has no figures left, it’s an extinction—it’s the same thing as when I talk about them dying.

I’m glad I did, because norm4 gave me this:

most 735
Mutations 54,110
extinctions 1000
Elapsed time=1 hours, 46 minutes and 46 seconds

With an average of only 54.11 mutations per extinction, norm4 looks good compared to some of the other norms, but she isn’t nearly as good as the latest round of mutants, with an average of 72. But her most field is higher than anybody else’s. “Most,” means the largest number of mutations that happened to one population. For the heck of it, I used norm4, mutating it and saving any population that survived 350 mutations.

Then I tested them.

most 908
Mutations 50,707
extinctions 1000
Elapsed time=1 hours, 47 minutes and 38 seconds

908 blows everyone else out of the water, but the average number of mutations per extinction is down to only 50.7.

As you can tell, any given run can last for hours. I go about the rest of my day, every now and then checking to see what’s been happening, or if the given run has finished. While testing the next population, I did, and saw…

most 656
Mutations 83,817
extinctions 820
Elapsed time=2 hours, 43 minutes and 46 seconds

That’s an average of 102.22 mutations per extinction, more than double norm4.1, but the most number of mutations any one population had is only 656.

It had reached 656 fairly quickly, so I was staring at that for ours. I wasn’t sure what to do. On the one hand, here’s a population that had the “most” shoot up; on the other hand, here’s the other that had the “average” double. Which population do I use to produce the next five? Eenny, meeny, miny…

The run wasn’t finished yet.

most 906
Mutations 84,854
extinctions 826
Elapsed time=2 hours, 45 minutes and 39 seconds

906 is still less than 908, but the average is 102.73, and once a couple of figures more or less between friends?

That wasn’t even the end of the run. Have the final result showing an average of 102.55

most 906
Mutations 102,554
extinctions 1000
Elapsed time=3 hours, 16 minutes and 50 seconds

I’m not showing results for norm0, because they were terrible. I’m not showing results for norm3 and norm4, because I haven’t tested them yet.

As soon as this is done, so is figures0.6. I updated the documentation last night and this morning. Once that’s put away I’ll be able to clean things up before attempting to make the entire system run faster, and do other tricks to be discussed at a later date. Until said later date, bye!

Leave a Reply