Solving the mutation problem



This might solve everything. I’ll need to do some testing to make sure I’m right, but there’s a beautiful way around the mutation problem.

It’s not the type of mutation; it’s the type of population. We’ve got two main types: the quick and the slow. The quick ones, like m1.pop, do their best to fill up all available space and to make new figures as quickly as possible. The slow ones generally find a particular population size, and stay there, no matter how much more room is available; and they only make new figures slowly. I’ve said several times, and it turns out to be true—speed isn’t everything.

The quick ones are killed by small numbers of mutations. The most I’ve seen m1 absorb is fifty. The slow ones, like 61.pop, can absorb many more mutations. 61 has survived more than ten-thousand mutations, and she only stopped because I stopped her.

Why?

I’ll tell ya why!

If I hadn’t read through the project journal like I usually do when it gets to certain sizes, I may not have noticed. At the very least, I could have been stuck on this for much longer. There were two throw away lines in two different entries that showed me the light.

In entry 13:

…if I deleted all but eight of them, she’d still run as usual. If I deleted one more, she died.

And in entry 16:


The population is at 61 figures, and stays there. She is also very resistant to mutations.

That was it. As it happens, both of those entries were posted.

Playing with populations

and

Now that’s evolution!

The quick pops are fragile. In m1, taking out just the one figure could be enough to destroy the entire population. This explains how one mutation was causing an extinction. They’re all shoved together, like intermeshing gears, and pulling the wrong one makes the entire thing fall apart.

Note: I’ll need to confirm m1 and other quick pops are as fragile as is implied in entry 13.

In slow pops, you get small chunks of figures that are meshed together. In several entries from the dish sized 3 slot 2 max pop size realm, most of them wouldn’t get to a larger population size. The two figures were linked so that a new one wasn’t being made until after an old one was gone. If you have, say, 61 figures in little sets of two or three, a deadly mutation will only kill one of those small sets. With 61, she’ll get whittled down slowly. Slowly enough that sometimes, there’s a burst of births, and the population jumps up and stabilizes at a larger size. I’ve seen that happen a couple of times and saved the results in larger0.pop and larger1.pop.

If I’m right, and I’ll be spending the rest of the weekend checking, then I know how to produce populations that can take large numbers of mutations. That means that they can try large numbers of experiments. And that’s what I needed.

I’m keeping skipcom, because I really want the unconditional branch to show up more easily, but other than that and the fat ports, none of the other tricks are necessary.

Crossing fingers, and let’s check.

First off, I’m working in figures not figures1. The only extra tricks implemented are the fat ports. As it’s the easiest test to do, I’m going to take a simple average of m1 vs 6 to see how many mutations each one can take. If all is well, 6 should be able to take many more, despite m1 being a larger population.

m1: most 42, least 2, average 14.1

1:
Mutations 9

2:
Mutations 20

3:
Mutations 22

4:
Mutations 12

5:
Mutations 5

6:
Mutations 7

7:
Mutations 11

8:
Mutations 42

9:
Mutations 11

10:
Mutations 2

6: most 183, least 1, average 54

1:
Mutations 183

2:
Mutations 1

3:
Mutations 52

4:
Mutations 17

5:
Mutations 120

6:
Mutations 59

7:
Mutations 51

8:
Mutations 22

9:
Mutations 24

10:
Mutations 11

61 starts with 61 figures, more than m1’s 20. I’m going to take 8.pop and run it up to 200 figures. Then I’ll save it as ml.pop and it’s ml vs 61. Considering the way 61 was behaving this morning, I reserve the right to shut her down if she’s taking too long to die. The same goes for ml, but first I have to make it.

Ml is a larger quick pop. To keep it from running forever and ever, there’s a cutoff after a million figures are born. 61 is a slow pop. Waiting for her to make a million would take hours, so her cutoff is after she’s absorbed ten-thousand mutations without getting killed. As it happens, they both reached their respective cutoffs once out of 11 runs. If we throw those out, the resulting stats are:

ml: most 355, least 19, average 125.2

1:
mutations 19

2:
mutations 156

3:
mutations 279

3.1: fat babies
mutations 588

4:
mutations 205

5:
mutations 84

6:
mutations 355

7:
mutations 80

8:
mutations 19

9:
mutations 27

10:
mutations 28

61: most 8029, least 647, average 3866.8

1:
mutations 5230

2:
mutations 4582

3:
mutations 1554

4:
mutations 8029

4.1: 10K cutoff longest=47783

5:
mutations 4676

6:
mutations 1434

7:
mutations 647

8:
mutations 5256

9:
mutations 3417

10:
mutations 3843
Clearly, the slow pops are more robust than the quick ones. I’ve got a couple of other tests to do, but that can wait for another day.


Leave a Reply