« on: October 01, 2008, 11:10:49 AM »
Imagine a population of bots, all of the same species. Ignoring new sim startup conditions or manual insertion of new instances of a species, by definition, all the bots in the species are related meaning that if you go back far enough, you will find a single, probably long deceased most recent common ancestor all the extant (meaning currently alive) bots share. Think of the relationship between extant bots and their ancestors as a tree, with bots (extant or not) as the leaves and birth events as the vertices.
Extant bots will generally be clustered in this tree, meaning all the alive bots will be closely related to one another. Said another way, if you look at all the bots that have ever lived in a species, most of them are long dead and the ones that remain are much more closely related to each other then they are to their long dead ancestors. The alive bots are grouped in the tree space.
Just to complicate matters, there are actually two ways to measure the relatedness of bots: through mutations and through generations. The sum of the number of mutations that have occurred along their lines of descent from their most recent common ancestor is the mutational distance and the sum of the number of generations that have occurred along their lines of descent from their most recent common ancestor is the generational distance. Imagine two extant bots of the same species, A and B. Say A and B have a common (probably long dead) ancestor C and that 30 generations occurred from C down to A and 20 generations from C down to B. What's more, along that line of descent from C down to A, 12 mutations occurred and from C down to B, 10 mutations. Well, if you add up the two lines of descent, the generational distance between A and B is 50. The genetic distance is 22.
Within the population of extant bots will be two which are most distantly related. That is, in the population of alive bots there are two which have the most dissimilar genomes (as measured by the number of mutations). They have the largest genetic distance. You can think of these two bots as being located on opposite sides of the group in the tree. Similarly, in the population of alive bots there are two which are separated by the greatest number of generations I.e. two which have the largest generational distance. Note that the two bots with the greatest genetic distance need not be the same two as those with the greatest generational distance, but that is a digression....
Speciation occurs when a species splits into two or more separate and independent groups in the tree that persist and evolve separately. We measure this via the Maximum Genetic Distance and Maximum Generational Distance of the original species. When the Maximum Genetic Distance and the Maximum Generational Distance of a species grows beyond a certain level and continues to increase over time, it is an indication that there are now two subgroups within the species that are evolving independently from one another. They are diverging in genetic and generational space. The tree has branched. Speciation has occurred.
The dialog lets you set the thresholds for when this occurs I.e. when the code will recognize this and give one of the two subgroups a new species name. If a specie's Maximum Genetic Distance and Maximum Generational Distance are both above the specified thresholds and the population of the original species is above the specified limit, then the simulator will split the species in two. How it does this is another long subject but you end up with a new species that has the same name as the old followed by a random number with the two groups of bots of the original species split between them. When this occurs, the graphs will show the new species and species level information can be tracked independently for the new species. Note also that species level sysvars such as *.totalmyspecies will now be a function of the new species.