Author Topic: Zerobot sims  (Read 20549 times)

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Zerobot sims
« Reply #30 on: December 03, 2006, 03:27:51 PM »
I don't see the value of such experiment.  Reproduction in DB is not a complicated mechanism that can be developed.  It is already hard-coded into the program.  It simply requires some junk numbers or commands followed by .repro store  Essentially what you are doing is using point mutations to generate random genotypes.  Surely you can just calculate a probability of appearance of a genotype that has .repro store commands in a row.  All you are doing in this experiment is testing the probability theory   and I don't think it needs to be tested

The real question is what happens to this simple reproducer after it appears.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline Jez

  • Bot Overlord
  • ****
  • Posts: 788
    • View Profile
Zerobot sims
« Reply #31 on: December 03, 2006, 03:41:09 PM »
er, seeing as you guys are discussing what a zerobot is and I was thinking of having some sort of zerobot league thingy (maybe not competitive) with, perhaps, a template zerobot that all entries had to start from, what would you suggest for that template?

I am in agreement with Shvarz, simply starting with a zero and waiting for probability to make the bots reproduce does seem just an exercise in patience to reach a point you know you are going to (have to) reach.
« Last Edit: December 03, 2006, 03:42:35 PM by Jez »
If you try and take a cat apart to see how it works, the first thing you have in your hands is a non-working cat.
Douglas Adams

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Zerobot sims
« Reply #32 on: December 03, 2006, 03:54:47 PM »
Quote from: shvarz
I don't see the value of such experiment.  Reproduction in DB is not a complicated mechanism that can be developed.  It is already hard-coded into the program.  It simply requires some junk numbers or commands followed by .repro store  Essentially what you are doing is using point mutations to generate random genotypes.  Surely you can just calculate a probability of appearance of a genotype that has .repro store commands in a row.  All you are doing in this experiment is testing the probability theory   and I don't think it needs to be tested  

The real question is what happens to this simple reproducer after it appears.

Right, it's inevitable that a reproducer will eventually form.  You're starting from 100% scratch.  Eventually a reproducer will develop, and natural selection will kick in.   The idea is three fold:

1.  In which order to actions appear?  That is, do bots learn to shoot before they reproduce?  Do bots learn to turn before they move?

2.  Remove as much bias in the initial bot as possible.  An evolved algae, for instance, is going to bear a remarkable similarity in structure to its ancestor for a long time.  If you start from a genome that is 100% void of any meaningful bias, what develops?

3.  Will a population of viable animal bots ever develop that don't need to be force fed by the program?

In answer to 1 and 2: It appears that viruses are one of the first constructs to appear.  The viruses tend to be extremely simplistic.  Generally they just store a random small number in different memory locations each cycle.  This does cause moderate reproduction, but it works far better at distributing the viral gene.  3 is still somewhat an open question, although Zinc Avenger's simulations seem to point to some valid conclusions even if it isn't technically ex nihilo.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Zerobot sims
« Reply #33 on: December 03, 2006, 08:08:04 PM »
Quote
In which order to actions appear? That is, do bots learn to shoot before they reproduce? Do bots learn to turn before they move?

These questions are meaningless without reproduction.  If a bot learns to shoot, but will not reproduce, what good will it do?  It's just going to be a single bot.  You can't draw any conclusions from this.  It is also of no importance to evolution, because evolution is based on reproduction.  All you've shown is that in your system some commands assembled by pure chance may give a phenotype that you find interesting.  That random shooter will likely not even be the best bot, as shots are expensive and it will just waste energy firing into nothing.

Now, the fact that viruses are the first thing that develops is an interesting finding.  Even more so, because I would predict that viruses would be difficult to develop.  That's a pretty cool result if confirmed by others!

As far as your concerns for bias, I don't agree at all.  The simple genome that I started with is completely gone in 1 million cycles.  There is nothing left at all.  One mistake I made was that I started with a reproduction gene that had a condition and a predefined % to give to baby.  Something like this would have been much better:

start
rand 100 mult repro store
stop
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Zerobot sims
« Reply #34 on: December 03, 2006, 08:50:07 PM »
FYI, in my experience, it takes between 10M and 15M cycles to produce a first replicator in a sim with 100 heterotrofs using a starting genome consisting of a sequence of 30 0's and the default mutation rates ocsillating between 1/6X and 16X.

One thing I have found is that whether you generate a replicator from a 0 sequence genome or start with your own, replication by itself is insufficient for evolution to proceed.  There must be some means for the organism to aquire nrg.   Even when costs are zero, reproduction takes nrg as some must be given to the offspring.  If some nrg aquisition method is not stumbled upon in conjuction with replication, replication ceases and of course evolution cannot proceed.

One strategy I have used to deal with this is to provide a source of random nrg shots in the sim by adding a (single - one is sufficient) veggy to the sim in addition to my 'normal' mix of DNA disabled veggies which has the following gene:

cond
start
1 .aimdx store
-2 .shoot store
stop

In conjunction with the everlasting nrg shots options, this results in enough random nrg aquisition to buy nacent replicators time to evolve some crude means of aquiring their own nrg, usually via constantly shooting -1 shots.  Brownian motion brings them in proximity to veggies and they aquire more nrg then they would randomly, giving them an advantage.

Once you have these two things - replication and nrg aquisition, then evolution can happen.  Costs can start to be applied, selection occurs and so on.
« Last Edit: December 03, 2006, 08:59:50 PM by EricL »
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Zerobot sims
« Reply #35 on: December 03, 2006, 08:58:13 PM »
Quote from: Jez
er, seeing as you guys are discussing what a zerobot is and I was thinking of having some sort of zerobot league thingy (maybe not competitive) with, perhaps, a template zerobot that all entries had to start from, what would you suggest for that template?

How about something such as "Any bot descended from an ancestor with a genome or 30 bais pairs or less ( hand coded or 0 sequence) and whose current genome is at least 100 mutations distant from that ancestor.
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Zerobot sims
« Reply #36 on: December 03, 2006, 10:25:19 PM »
I wouldn't even put an upper limit on the the number of mutations.  Just so long as 100% of its DNA came from a predecessor (not from viruses of league bots infecting them).   I wouldn't put any strictures on how the evolved bot is treated either.  If you want to just let a bot develop on its own, that's equally valid as if you prune and weed like Zinc Avenger's sim.

Quote
These questions are meaningless without reproduction. If a bot learns to shoot, but will not reproduce, what good will it do? It's just going to be a single bot.

A single bot in a sim full of other single bots.  We've seen big berthas in the past.  With costs all set to 0 (as is usually done) a bot that fires -6 shots all the time is going to have a great deal of surpluss body and nrg.  As Eric pointed out above, something that just replicates all the time without a source of raw material is eventually going to stop reproducing.  This is as true in Darwinbots as in real life.  I think the question of what develops first and in what order is fundamental, and largely unexplored in Darwinbots.

Quote
You can't draw any conclusions from this. It is also of no importance to evolution, because evolution is based on reproduction.

Right, natural selection requires reproduction.  However, somethings still acting even without Natural selection.  A bot that learns to shoot -2 (nrg) shots all the time is going to kill itself.  There are so many ways for a bot to kill itself.  There's another sort of natural selection at work here.  But instead of having the creature try to live on to the next generation, you have the genomes fighting just to survive till the next cycle.  Genomes that can't are immediately removed, and fresh ones are given in their place.  It's not natural selection, but it's definately not all random.

Quote
Now, the fact that viruses are the first thing that develops is an interesting finding. Even more so, because I would predict that viruses would be
difficult to develop. That's a pretty cool result if confirmed by others!

It's happened at least twice.  Testlund has posted his bots that learn to do this.  Both viruses were about 10 or 20 base pairs, and extremely inefficient at producing a virus from itself.  But it still managed to do so every once in a while.  What I think this is is DNA learning that it doesn't need to use bots to reproduce.  Bots can die, and they need physical substances eventually in order to reproduce indefinately, but viruses can infect fresh copies of the zerobot being spawned into the simulation.

It would be really interesting to see where that course of evolution would go, but the DNA length of bots in the sim starts to get really out of hand.  Like on the order of thousands of base pairs and steadily climbing.  Some DNA costs would probably help.  The research is ongoing!

Quote
As far as your concerns for bias, I don't agree at all. The simple genome that I started with is completely gone in 1 million cycles. There is nothing left at all. One mistake I made was that I started with a reproduction gene that had a condition and a predefined % to give to baby. Something like this would have been much better:

Certainly after several thousand mutations, the final product is probably statistically lost.  All correlation has entirely been destroyed.  But that initial genome provides momentum into what sort of bot you're going to end up with.

Even if there was no good reason to play with ex nihilo sims, there's still a romantic magic about starting from scratch and seeing what develops.  It's hardly a new idea, the majority of other simulators let you start with noncoding empty cells and allow reproducers to eventually develop.

Offline Testlund

  • Bot God
  • *****
  • Posts: 1574
    • View Profile
Zerobot sims
« Reply #37 on: December 04, 2006, 06:29:49 AM »
Well, reading the discussion here I see it is worth it to try both starting from nothing and starting with a basic replicator. Also I have found that if you let the program make a replicator it never seem to give 50% energy to it's offspring, more like close to 100% or 10%. I'm waiting to see what effect that will have. The one that gives allmost all of it's energy to it's child will actually just try to avoid the ageing costs to stay immortal. Logically all it takes is some bad mutation to kill off that offspring and that kind of bot will be gone.
I think a bot like the one in Shvarz example whould be the most effective kind which might prevent other kind of reproduction metods from taking over, like that of viruses for instance. In my evosims though I've seen that viruses are what really kicks the evolution forward by providing a lot of code.
In any case I think it can be interesting to compare two evosims (one with a predesigned replicator and one null) just to see what other things might evolve and when. So I'm thinking I should try that with my two computers now.  

By the way I've heard that there is a theory that viruses might have been the first that appeared on earth. An interesting paralell.
« Last Edit: December 04, 2006, 06:31:36 AM by Testlund »
The internet is corrupt and controlled by criminally minded people.

Offline Jez

  • Bot Overlord
  • ****
  • Posts: 788
    • View Profile
Zerobot sims
« Reply #38 on: December 04, 2006, 07:31:30 AM »
Ok, I've done a little bit of surfing to see what people think about abiogenisis.

A common thread seems to be self replication using some form of free energy.

I jumped on the zerobot idea because that seems a much more purist way of running the evolution, not using other bots for gentic contamination or starting from a previously designed bot. DB was really designed as an evolution program, I think zerobots are a really good way of exploring what the program is capable of.

Testlund raises a good point, because the bots aren't limited, at the start, to only producing identical copies of themselves, the bots have taken it upon themselves to test the programming by varying their reproduction percentage. Also the idea that they might replicate in ways other than .repro is a possible reason to not give them the .repro command to start.

I think one of the problems that we are going to run into is that the veg are defined as veg outside the sim, not inside the sim. Eric thought of a neat way to provide the free energy that this sort of evolution needs to start but that might have an affect on the path evolution then takes. Otherwise we are using an outside, non evolving, heterotroph command to provide the start energy.

The virus thing is interesting, is this evolution of proper viruses or a form of evolutionary horizontal gene transfer as suggested by Carl Woese, the chap that discovered the Archaea?

Quote
instead of having the creature try to live on to the next generation, you have the genomes fighting just to survive till the next cycle. Genomes that can't are immediately removed, and fresh ones are given in their place. It's not natural selection, but it's definately not all random.

I don't see that as a problem tbh, you are looking at the evolution of a species in an area that provides the right properties for mutation, there are millions of other self replicating bodies in other areas, that aren't so encouraging for mutations and as your mutating bots die out more unmutated bots drift in. Until your mutating bots manage to colonise the area by evolving positive mutations this is always going to happen. I don't see evolution as a world wide blanket event. I think this is a great way of modeling natural selection, albeit our hotspot might be a little small...

Anyway, in the interest of not confusing things by arguing over terminology, I define a zerobot as starting from (almost) nothing and an evobot as being evolved from something with possible genetic contamination allowed.
Doesn't matter (to me) if the evolution is run as a test of randomness or in God mode. (You slaughtering the bots you don't like and pretending to take care of the bots you do like!)
The template I was thinking of is probably not a fixed template, more what you can't have. (You can have .repro, you can have as many random numbers as you like, but nothing else, for instance).
If you try and take a cat apart to see how it works, the first thing you have in your hands is a non-working cat.
Douglas Adams

Offline Zinc Avenger

  • Bot Builder
  • **
  • Posts: 56
    • View Profile
Zerobot sims
« Reply #39 on: December 04, 2006, 08:26:06 AM »
The only reason why my "headstart" bots have 50 .repro store in there is because I don't want to wait 15m cycles for something interesting to appear. If my computer was faster, I would have no hesitation to start with a "pure" zerobot.

I've performed super-long-term "pure" zerobot sims (on machines at work I've "accidentally" left running all weekend, save on Monday and load and continue every Friday...) that have reached several tens of millions of cycles. I don't see this as more or less valid than an intensive bonsai - the costs and my whims are all part of the environment and they evolve to survive both. Its the evolution of behaviour I find interesting, rather than the starting point.

I like the idea of a zerobot league. How about two: one with vanilla zerobots with, say, 20 zeros and nothing else, and another with (50 .repro store) and 17 zeros. Competitors can tailor their evolution sims in any way they like (bonsai-style environmental pruning encouraged but hand-editing of dna strictly forbidden) but the competition only takes place in a fully-standard F1 environment, winner is the last bot standing.

Perhaps to encourage some seriously long collaboration we could also include a clause that whatever bots are submitted are fair game for anyone to take and evolve and compete with, provided they put the bot through at least, say, 10m cycles of their own before submitting.

If anyone is interested, we'd need to come up with a naming convention for the bots... Hmm... An identifier for the original bot, then a two letter code for the competitor, then the number of million cycles that competitor evolved it uniquely, adding the code and number of cycles removed from the last submission? Like I might start a bot 01ZA5.txt (Starting zerobot 01, then baked by Zinc Avenger for 5 million cycles) and Testlund might give it 10 million cycles so it would be named 01ZA5TL10.txt. That way we might be able to build up a family tree.
« Last Edit: December 04, 2006, 08:28:02 AM by Zinc Avenger »

Offline Testlund

  • Bot God
  • *****
  • Posts: 1574
    • View Profile
Zerobot sims
« Reply #40 on: December 04, 2006, 08:42:36 AM »
Well, this is the first time I think running a league could be fun!    I haven't even bothered to check out that tab in the settings before. My zeroveggie whould need a head start though for the competition to be fair. Fortunately I have evolved one that could be worth putting to the contest. Both species must be able to handle the same costs. It's just that my zeroveggie contains a lot of junk DNA that sometimes trigger and make it do stuff like forming ties and do an occasional swim. The predesigned whould ONLY be able to reproduce at set state e.g. when getting enough energy. The best whould be if one could run two large sized sims connected via lan, which I can't. I could run two instances but then they whould have to be smaller size with less bots in them, to prevent slowing down too much.
Hmm... How should we do this?  
The internet is corrupt and controlled by criminally minded people.

Offline Zinc Avenger

  • Bot Builder
  • **
  • Posts: 56
    • View Profile
Zerobot sims
« Reply #41 on: December 04, 2006, 10:52:07 AM »
I was thinking only competing zerobots against zerobots - I can't seriously imagine a zerobot taking on the current top of F1 (or even most novelty bots!) without about two hundred realtime years of evolution  Even as it is, I expect most zerobots to have difficulty with F1 costs, so at the initial stages of the league I expect the leading competitors to be the ones that die slightly slower from costs than their opponents

So although it would take the form of a competitive league, the overall goal would be to push the cutting edge of naturally evolved bots as far as it will stretch.

That's why I suggested the bit about letting anyone take any bot in the league and submit it on the condition that they give it a certain number of million cycles of evolution. Perhaps 10 was a bit harsh, particularly as execution times climb as the dna becomes more complex. Perhaps 2? But no upper limit of course, if you want to bake it for 100m cycles you're likely to be on to a winner! Hopefully this might mean that more successful branches of the family tree might end up with more people evolving them further.

Okay then Testlund, lets do it.

Can you give us a copy of this pure zerobot in its current state as the first contender? How many cycles has it had so far?

I also find that with my no-longer-new-and-shiny HT Pentium 4, two or even three sims can be run simultaneously without (too much) performance loss, and newer multi core processors will be able to handle it even better.

Offline shvarz

  • Bot God
  • *****
  • Posts: 1341
    • View Profile
Zerobot sims
« Reply #42 on: December 04, 2006, 11:21:50 AM »
I would suggest to choose settings different than F1.  F1 is OK as a battleground, but it does not provide an interesting environment.  I'd suggest increasing the size, using different physics (solid teflon), a bit lower costs (but not zero), higher number of bots to start with (100 each?), dynamic costs of some sort, maybe 10 random shapes.  Maybe have a veggie with a more interesting behavior than the basic reproduction.  It would also be cool to have some kind of user-designed bot as a hunter, but the way leagues work right now there is no way to exclude that hunter from competition.  Decide on the settings, then post the settings file so that everyone could d/l it and use it.
"Never underestimate the power of stupid things in big numbers" - Serious Sam

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7742
    • View Profile
Zerobot sims
« Reply #43 on: December 04, 2006, 11:58:25 AM »
I agree with shvarz on some things.  Specifically, you'd want an arena that's larger and you'll want some things like friction, etc.

However I think costs should be tweaked.  You'll want the cost for DNA execution to be 0, but I'd have a DNA upkeep cost.  Most of the other costs as well that are normally 0 in F1 mode should be set to some rather low value.  Especially have an existance cost, so there's a steady nrg drain.

For progenitors, I'd insist on only bots with 0s in its DNA, but the initial DNA length should be determined by the bot evolver.

League entrants should be given in a form that includes the hash entries at the top and bottom to ensure that the bot is really an evolved bot.
« Last Edit: December 04, 2006, 11:58:59 AM by Numsgil »

Offline Testlund

  • Bot God
  • *****
  • Posts: 1574
    • View Profile
Zerobot sims
« Reply #44 on: December 04, 2006, 12:22:00 PM »
Hmm... Could we wait until next year? I was thinking about starting a new null evosim after New Years Eve for two reasons:

1. There are some issues that I whould like to see solved, some overflow bugs and finally be able to use the latest improvements to DB. So I was thinking I should keep running my current evosim to find as many bugs as possible for Eric to solve until next year, so I will hopefully be able to run an non-interrupted evosim! I've been waiting so long for that! (Just send the christmas presents through mail and put the turkey beside your screen and you can keep working on this, Eric.)  

2. On my new computer I whould like to run a "Shvarz Evosim" now and compare what the difference will be.

Otherwise you go ahead without me and maybe I can join next time. By the way I haven't a clue how to use the leages functions. Need to learn that first.
The internet is corrupt and controlled by criminally minded people.