Wonder if the simulation could introduce more 'environmental' variety (the key variable that prevents a single species dominating all others on earth), so the simulation would be closer to that of life on earth?
Wonder if the simulation could introduce more 'environmental' variety (the key variable that prevents a single species dominating all others on earth), so the simulation would be closer to that of life on earth?
I described what (I think) I'm seeing in https://github.com/Rabrg/artificial-life/pull/1 , and suggested in https://github.com/Rabrg/artificial-life/pull/3 that random mutations ought to blow away the whole tape rather than modify only one cell of it. However, even with that modification to the rules, I still see the `<` substrate taking over the whole map, except when the mutation rate is very high. (I admit this doesn't make a ton of sense to me.)
So, anyway, it's easy to make the mutation rate vary from one side of the map to the other. If you do that right, you can see the `<` substrate take over the low-mutation-rate side of the map, but fail to take over the higher-mutation-rate side.
The `<` substrate is easy to see in the gif: it's a rapidly spreading splotch of red with gold noise flickering inside.
If we can come up with an accurate per-candidate fitness metric, there are techniques like fitness niching that can be much more accurate & flexible. Only allowing candidates within a certain range of performance to interact is one of the most powerful knobs you can turn for controlling convergence speed. Adjusting the niche radius over time is trivial.
Now, don't quote me on this part, but I think the first replicator to take over is this (minus all the "junk DNA" between the instructions):
[}<,]}],<}[
and the second, more efficient, one is: {[}<,]],<}[{
The latter means roughly: --head1;
while (*head0) { *--head0 = *++head1; }
*head0-- = *head1++;
while (*head0) { --head1;
// CUT HERE
which gets pasted together with whatever cell it's breeding with at the time.