How to test if an artificial life simulator is just another GA optimisation algorithm, or a realistic simulation of life? I felt that if the simulator allows emergence of self sacrifice (for the wider benefit of the population), that would be a pretty good test.
So I went on to test this with Evo(rand).
In that article, I will present the results of 2 simple experiments.
In the first experiment, the model of the World is like this:
Result: the Behaviour of Sacrifice does emerge after some half a day of simulation. It actually took me quite some parameter tuning and testing to find a situation where the Sacrifice behaviour would emerge without having the population increasing exponentially. The problem is that once a substantial percentage of the population Sacrifices itself, the total Energy in the world (be it Food in the Ground or Energy of the Creatures) increases very fast and the population explodes.
Here is an example of the population evolution:
As can be seen above, after a long simulation around 40% of the dead were due to self sacrifice. The behaviour rules are quite simple:
Not too bad! But tempering with the conservation of Energy is not very realistic, so I came out with another idea.
Before going into the details of this experiment, I must introduce the notion of Specie. The simulator keeps track of the entire genealogical tree. It analyses this tree to seperate one Specie from another. In this simulation there are 8 Species, and each Specie is represented by a different colour in the tree. Here is an example:
The differences between this test and the previous one are:
Can you guess what the above configuration leads to in terms of evolution? Take a few minutes thinking about it... Here is the result.