Bots and Simulations > Simulation Emporium

Maca's ecosystem challenge

<< < (3/4) > >>

shvarz:

--- Quote ---I would greatly appreciate your expertise in making suggestions along these lines.
--- End quote ---

How do you calculate diversity now?

There is nothing wrong with using term "species", even when mutations are involved. When you are talking about different versions of the same species, then you can call them "strains". But I agree that the definition of species is confusing in the continuous evolution - at what exact point do you call something a different "specie"? It is really just a philosophical question. Our concept of a "specie" is not exact and clear-cut.  

It might be useful to have an automatic assignment of strains, just based on the number of mutations. A bot reaches 100 (or any other number) of mutations - program renames it into bot-S1a, and starts tracking its stats separately from the original bot. Another bot reaches 100 - it is called S1b, etc. When S1-generation strains reach 200 mutations, they are named S2, etc.  I see a lot of problems with this system, but it might be a good first step - it will help in tracking down different strains as they spread through internet populations.


--- Quote ---I.e. costs going up favor one species, costs going down favor the other, a stable co-existance emerges as they battle, with neither one able to exterminate the other since the environmental costs work against them as they become dominate.
--- End quote ---

Great idea, I should have thought of this myself!

EricL:

--- Quote from: shvarz ---How do you calculate diversity now?
--- End quote ---
Bots inherent a "subspecies" number from their parent.  I change this number when a mutation (or virus infection ) occurs.  This, if there are no mutations (or virus infections) in a sim, all bots (of the same species) have the same subspecies number and the diversity graph will show a diversity of 1 for the species.  Otherwise, it shows the the number of unique subspecies within a given species.  I don't compare actual genomes for perf reasons, only track changes, so it can overcount in cases where say, a virus infects two bots with identical genomes in an identical fashion.  Those two bots will still have identical genomes, but they will be counted as two different subspecies.


--- Quote from: shvarz ---There is nothing wrong with using term "species", even when mutations are involved. When you are talking about different versions of the same species, then you can call them "strains". But I agree that the definition of species is confusing in the continuous evolution - at what exact point do you call something a different "specie"? It is really just a philosophical question. Our concept of a "specie" is not exact and clear-cut.
--- End quote ---
This is essentially what I meant.  We have problems defining what we mean by "species" in nature even for sexually reproducing species.  Reproductive ring species confuse reproductive boundaries for example.  What species means for asexually reproducing organisms is even more clouded.  I agree it's a term of convienence with not good techical definition.


--- Quote from: shvarz ---It might be useful to have an automatic assignment of strains, just based on the number of mutations. A bot reaches 100 (or any other number) of mutations - program renames it into bot-S1a, and starts tracking its stats separately from the original bot. Another bot reaches 100 - it is called S1b, etc. When S1-generation strains reach 200 mutations, they are named S2, etc.  I see a lot of problems with this system, but it might be a good first step - it will help in tracking down different strains as they spread through internet populations.
--- End quote ---
This is more complex than it sounds.   I can't do it just by number of mutations from a common ancestor since all bots in a sim would become their own species/strain after a certain number of mutations even if they were genetically identical to one another.  I have to compute the genetic distances between extant bots and create  new susbspecies only when a a group of bots (a bot and it's ancestors) "splits" from the others, meaning their linage contains a significant number of mutations not shared by the rest of the population.

It would not be hard too difficult to maintain an exact phylogeny of all bots in a sim - a chain of ancestor bot IDs for each bot leading back to their base organism.   What we need is to find a rational, non-trivial and computationally effecient way to way to group extant bots into subspecies based on this tree. As a first step, I may attempt a bar graph which attempts to chart the number of mutations unique to each and every bot I.e. that have occurred only along it's linage and are shared by no others.  Then I may try to "coallspe" bots together, I.e. a bar graph that treats any two bots that differ by only a single mutation as a single data point, etc.   I'll have to noddle on this some more...

shvarz:
Yes, I know that it's much more complicated than that. In fact, if you consider that there are multiple sims running simultaneously, but not synchronously, then the whole problem becomes much more complicated.

I'm just trying to get a grip on what kind of information we need and the easiest way to get it.  The info I want is the ability to tell whether a bunch of Lionfishes in my sim are all from my own sim, or a mix of strains from other people's sims. An easy way to do that is to put a label on bots now and then, a label that would stick around on all of their offspring. This way if I see Lionfishes with two different labels in my sim, then I know that these guys came from two different lineages. I can kind of do it now, if I just look at the sim and see Lionfishes of two different colors, but it's not a very reliable way. Re-naming species after N number of cycles, or N number of mutations or N number of generations would be an easy fix and would be helpful.

Here's an example: the multiply(shvarz) bots in my sim are just offsprings of a multiply(peter) that I picked semi-randomly (I picked a bot with largest number of offspring), saved its DNA and loaded back into the sim. One thing that I could tell is that multiply(shvarz) after certain time replaced the original multiply(peter), so I know that it's a better bot than the one that was in my sim previously. Also, now I know when multiply(peter)-s come into my sim from other people - they appear separately on the graphs. So re-labeling that bot that was quite useful. Automating this process would be useful too.

EricL:
What you did only worked because the bot lineage you happened to pick, rename and reload didn't die out.  It went on to became the single ancestor of all modern multiply(shvarzs).  Incredibly lucky.  Had you picked any other multipl(peter) to rename, you would by definition have seen your newly named multiply(shvarz) "species" die out within a few generations, since as you say, all other multiple(peter)s were killed by descendants of the bot you choose.  

I suppose I could pick the "best bot" every 100 mutations or 100k cycles or something like that and automatically rename him (and all it's descendents) but there is no gurarentee that bot will have any extant descendents a few generations down the road nor is there any guarentee that there is any meaningful genetic difference betwen bots with the new name and those with the old.  In fact, there may be vastly more diverstiy within a species than between the old and new.  

I simply can't know when lineages are going to make it and which are not ahead of time.   What I would really like to do is rename a set of bots to a new species name once that set has "forked" and obtained a meaningful genetic distance from others - in effect, looking back in time and renaming all extant descendents of a parituclar bot where an interesting branching occurred.

You don't need to reload a bot from saved DNA to change the name of a bot.  The act of saving it's DNA lets you give it a new name which will apply to the bot you saved from without reloading.  I think I will make this easier and  add a "fork species" menu item on the robot menu that lets you manually rename a bot and all it's descendents then automate that...

shvarz:
Hold on, I have a much better idea.  You say that keeping phylogeny of all bots in a sim is no prob. Then how about this: If two bots (or groups of bots) don't have a common ancestor during the last N generations, then they are called different strains and get renamed. That sounds pretty easy, right?  The only problem is what to do with bots that left the sim and then pretty soon came back - their phylogeny info will be missing, they may be closely related to bots in the sim, but unless you transfer the whole phylogeny with every bot, you are not going to know that.

An alternative (although more memory-expensive way) to do that would be for each bot to kip botIDs of all its parents over the last N generations. Then the ancestry of the incoming bot can be checked against ancestry of all current bots in the sim and its strain can be correctly identified.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version