Attached is the long running zerobot sim I discuss
here. It has just passed 1000 cummulative hours of run time and for all of that time has had at least 1000 heterotropic bots (with veggies and corpses, the overall total is usually around 1500). It's currently just over 20.5M cycles, which means I have run well over a million bot-simulation-hours or over 20 billion bot-cycles with this sim.
It started out as a standard no-costs zerobot sim with 1000 pure hetertropic zerobots whose DNA consisted of nothing but 30 0's. The mutation rates have always been set to the default.
The first replicator emerged at around 11 million cycles at which time I added a couple (yes, just a couple) of the attached 'bleednrg' veggies with mutations and reproduction disabled. I turned on everlasting nrg shots and set the autotroph nrg intake level sufficiently high to cover the veggy's nrg loss. This filled the sim with nrg shots and provided a means for my replicators to replenish the nrg lossed during reproduction through random nrg shot impacts.
Replication was very slow at first, but over time, the generation time dropped, the reproduction rate increased and I started enabling some costs. There was some die off even before I enabled costs as some bots would shoot away all their nrg or were unlucky enough to encounter another bot shooting away with feeding shots. For the first few milliong cycles with costs, CostX would zero quite often, either nautrally or due to hitting the safty net threshold.
Once replication was going, I was surprised at how quickly average DNA lengths grew (virus driven in part I suspect - more below). I went from average DNA lengths of 30 to 100 in a million cycles (it has stayed around 150 for the past few million cycles) and soon the DNA was long enough for quite a diverse set of morphs to emerge.
The problem with filling the sim with nrg shots is that while it provides a lot of nrg to encourage faster generation times, it does not provide any (or very little) directional selection pressure. There is very little nrg locality, no strong directional pressure for bots to evolve strategies for locomotion as a means of aquiring more nrg. In fact, most of my bots had fixed themselves. They had stumbled upon reproduction by writing random stuff to random mem locations and a side effect of that was fixation (as well as occasional furitless movement attempts, tie firing at nothing, virus generation, etc.) One could actually see the populatuion pulse every 1000 cycles as bots walked the memory in sync writing values. Perhaps siblings had all inherited the same algorithm based on the same random number source. I never investigated, but the saw tooth population pattern was obvious in the graph for millions of cycles and it can still be seen even today though quite a bit less pronouced. Reproduction rates have climbed since then and become more evenly distributed accross time.
Around 15M cycles, I disabled everlasting nrg shots and increased the veggy population to 350 (just a guess. I eyeballed how many veggies would be necessary to get the veggy/nrg density I wanted for the largest field size). This provided islands of nrg locality and directional selection pressure for bots to move to aquire nrg and my bots did indeed evolve movement. Within a couple million cycles, the fixed bots were gone and the survivors were all in motion at the max speed. They had evolved not to fix themselves (with the loss of everlasting shots, staying fixed had become deadly as the probability of a veggy materializeing by you by chance was too low. Ancestrial lines that fixed themselves died out over time.)
Movement increases the probability of impacting an nrg shot often enough to offset both costs and the nrg given to offspring during reproduction. Moving faster increases this. The cost multiplier crept up and hasn't hit zero in several million cycles. The reproduction rate also continued to go up, fueled by the nrg aquired via movement through the islands of veggy spawned nrg shots. Selection was favoring faster reproduction and shorter generation times.
It was about this time when the virus described in the other topic started infecting veggies regularily (was probably around even eariler). I'm sure it or it's ancestor was involved in the rapid increase in average DNA length noted earlier. (The subject of viruses and their relationship to organism evolution is I'm sure a fasinating subject, one worht exploring further.) But over time, the virus would infect too many veggies and it stopped them from shooting! I was forced to repeadedly kill off the virus-infected veggies by hand once a night lest the nrg supply to my zerobots dry up completely. Eventually, I tweaked the body upkeep cost and the nrg intake level so that an autotroph with 32000 body would die eventually even if it stopped bleeding nrg. In this way, a virus infected veggy woudl still die over time to be replaced with a preistine, uninfected one (remember, they can't reproduce). I also set the starting nrg for the veggies to 30000 to make them last longer as they bled away nrg. A cost on DNA length also helped put heavily infected bots with long DNA at a competitive disadvantage, keeping DNA length reasonable and the virus in check.
A side effect of this change is that the landscape is now constantly changing. Veggies blink into existance, bleed nrg for 300-400 cycles (or longer if they are close to one another and absorb each other's nrg shots) die leaving a corpse, decay and vanish. My goal was to put in place pressures that would encourage bots to evolve more sophisticated adaptations over time rather than just constantly moving. The idea is for selection to favor conditional behaviour such as "stop when I see or bump into something." Stopping next to a bleeding veggy while it exists would increase the nrg intake relative to constant motion but stopping forever would be deadly.
Things have been pretty steady the last million cycles, but as I write this, I snotice the cost multiplier creeping up slowly over the past 10,000 cycles. This is an indicator that bots are getting more adept somehow at aquiring nrg and turning that nrg into reproductive success. The slope of the cost multiplier curve can tell you a lot about the health of the sim. What I think might be happening is that bots have evolved the strategy of not only moving constantly but of constantly shooting nrg feeding shots ahead of them also. This means that when they hit a veggy directly as oppsed to simply flying through it's cloud of shots, they get an extra nrg boost from the nrg shots released in response to their feeding shots. This adaptation is more surprising than it sounds at first since it means the bots have evolved the beginnings of longitudinal asymmetry. They could have evolved to move in any of the four movement sysvar directions and in fact, a few milion cycles ago, I had just as many bots moving sideways or backwards as I did forwards. But shooting shots ahead of you in the direction your moving is clearly an advantage when it comes to getting the most out of an impact with a veggy. Anyway, the total nrg sequesterred by the zerobots is also slowly increasing (as it must to offset increasing CostX) even though the population is kept in a range and constant on average over time by auto costs - another sign that directional selection is underway. What's more, the nrg level of the the veggies is creeping down ever so slowly, which would be consistant with my const shooting ahead adaptation hypothisis.
I've attached a screen shot of the increasing cost multiplier graph. I plan to keep this sim running and running and running. Hopefully at some point in the not too distant future, I'll see some conditional logic emerging!