Author Topic: Maca's ecosystem challenge  (Read 6428 times)

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Maca's ecosystem challenge
« on: September 02, 2007, 10:24:35 AM »
 

This is my own challenge proposal:

To set up and run a stable ecosistem with as much different non-friendly species as you can put together. Each species must have a clearly different DNA and behaviour (if you want an extra challenge, pick only bots from the Bestiary), and be able to reproduce whenever they reach an energy threshold. Symbiosis is not allowed. Parasiting -stealing energy from the host without directly killing it- is ok. Mutations may be disabled. The field size should be 24k x 32k at most, and they should be able to run 1 million cycles without any extinction. Costs of your choice.
Sometimes you win, and sometimes you lose...

Offline Peter

  • Bot God
  • *****
  • Posts: 1177
    • View Profile
Maca's ecosystem challenge
« Reply #1 on: September 11, 2007, 03:55:06 PM »
Hmm, a stabe ecosystem with bots trying to kill each other. Has something like that been done with even 2 species. This sound kinda hard.  Have you tried it yourself so is it even possible. I would like to see something like it.
Oh my god, who the hell cares.

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Maca's ecosystem challenge
« Reply #2 on: September 12, 2007, 12:30:41 AM »
It's extremely difficult to do, but it becomes a little more possible with each iteration of the main program.

Offline Peksa

  • Bot Destroyer
  • ***
  • Posts: 118
    • View Profile
Maca's ecosystem challenge
« Reply #3 on: September 18, 2007, 05:52:16 PM »
I suppose using .totalbots and .totalmyspecies isn't allowed?

Offline MacadamiaNuts

  • Bot Destroyer
  • ***
  • Posts: 273
    • View Profile
Maca's ecosystem challenge
« Reply #4 on: September 18, 2007, 06:22:34 PM »
It would be more interesting if not, but I wouldn't mind if a species uses them to limit its own population, without disabling its ability to kill their prey.
Sometimes you win, and sometimes you lose...

Offline Testlund

  • Bot God
  • *****
  • Posts: 1574
    • View Profile
Maca's ecosystem challenge
« Reply #5 on: September 28, 2007, 03:55:26 AM »
I've actually done pretty much what you describe way back. I think you can have max 9 species in the list. I started with each species in there own square around the borders and found that the best bot was R_Fisannis. Animal_Minimalis came second. Also I found those two are the best beginner bots for when you first want to get aquainted with the program.  

I think it was last year I tried this but since the program has changed so much it might be interesting to try it again to see how those old bots would manage now.
The internet is corrupt and controlled by criminally minded people.

Offline Endy

  • Bot Overlord
  • ****
  • Posts: 852
    • View Profile
Maca's ecosystem challenge
« Reply #6 on: September 28, 2007, 11:04:53 AM »
I've managed to do something like that using a self-made autotroph(limited free nrg bug, in older vers) and a sharer/body feeder. The free nrg bot has to be along the edges for it to work so it's limited in its spread and is serving as food for the other species.

The sheer population pressures cause cannibots to form in particularly crowded areas and helps to keep down the sharer's population levels. Right now I'm trying to add in additional species in the more vacant regions to see if I can't work additional species into the ecosystem.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Maca's ecosystem challenge
« Reply #7 on: September 28, 2007, 12:54:12 PM »
My current internet-enabled sim has been running for over 2 million cycles with evolving multiply(shvarz) and Lionfish1.5. Sometimes one wins,  sometimes another, but so far it's been very stable with neither species going extinct.

EDIT: Which actually is very interesting. Population genetics theory states that this is extremely unlikely and that one of the species should have displaced the other by this time. Why that did not happen?
Theory 1: shvarz(multiply) is actually better adapted to the sim conditions, while Lionfishes often come from other people's sims and they are unsuccessful invaders.
Theory 2: The sim's conditions favor a bot that is in low numbers and allow it survive with no competition from the dominating bot. This may be due to patchiness of food in the sim (although I don't really see it just by looking at the sim).

Any other ideas?

EDIT 2: Damn, I jinxed it! After all these cycles, Lionfish went extinct....
Anyone interested in some recent saves of this? I save every 2 hours, so about 20-hr-old sim should still be there.
« Last Edit: September 28, 2007, 02:52:23 PM by shvarz »
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Maca's ecosystem challenge
« Reply #8 on: September 28, 2007, 03:01:06 PM »
Quote from: Testlund
I think you can have max 9 species in the list.

It's 75 species max now in current buddy drop builds.  I'd increase it further, but I am hitting an internal VB limit on the simopts structure size.  Likely I will cap it there for native species and do as Nums suggests on a separate thread and keep imported species from intenet mode in a different structure...
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Maca's ecosystem challenge
« Reply #9 on: September 28, 2007, 03:07:20 PM »
Quote from: shvarz
My current internet-enabled sim has been running for over 2 million cycles with evolving multiply(shvarz) and Lionfish1.5. Sometimes one wins,  sometimes another, but so far it's been very stable with neither species going extinct.
You know better than I that we have to be careful with the term "species" in DB when mutations are invovled and with asexually reporducing organisms in general.  Taking a look at the species diversity graph may shed some light on how related the organisms of a single "species" really are.  I would like to add more enhancements in this area that can provide greater insight into diversification e.g. a graph which charts the average genetic distance between organisms.  I would greatly appreciate your expertise in making suggestions along these lines...

Quote from: shvarz
Any other ideas?
I have seen stabalizing selection favor sims with multiple "species" in sims with autocosts.  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.

Quote from: shvarz
EDIT 2: Damn, I jinxed it! After all these cycles, Lionfish went extinct....
There's still some in mine.  Wait a little bit...  
« Last Edit: September 28, 2007, 03:09:20 PM by EricL »
Many beers....

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Maca's ecosystem challenge
« Reply #10 on: September 28, 2007, 04:09:47 PM »
Quote
I would greatly appreciate your expertise in making suggestions along these lines.

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.

Great idea, I should have thought of this myself!
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Maca's ecosystem challenge
« Reply #11 on: September 28, 2007, 04:57:25 PM »
Quote from: shvarz
How do you calculate diversity now?
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.
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.
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...
« Last Edit: September 28, 2007, 04:58:13 PM by EricL »
Many beers....

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Maca's ecosystem challenge
« Reply #12 on: September 28, 2007, 06:00:22 PM »
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.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Maca's ecosystem challenge
« Reply #13 on: September 28, 2007, 06:28:24 PM »
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...
Many beers....

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Maca's ecosystem challenge
« Reply #14 on: September 28, 2007, 07:02:39 PM »
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.
"Never underestimate the power of stupid things in big numbers" - Serious Sam