Darwinbots Forum

Welcome To Darwinbots => Newbie => Topic started by: -venom- on January 18, 2007, 09:24:29 PM

Title: zerobot sim
Post by: -venom- on January 18, 2007, 09:24:29 PM
ok I saw a topic about zerobot sims. I have just one thing to ask what the heck is a zerobot sim?
Title: zerobot sim
Post by: MacadamiaNuts on January 18, 2007, 10:40:33 PM
It's a sim where the code of the starting bot is just a bunch of spaced 0's. So, when you start the simulation, they sit there until point mutations (they can happen anytime, without reproduction), make them start "doing things". So the idea is to wait and see if a functional a-life can evolve from zero.

I usually start a zerobot sim with all bots as vegetables, so they are kept well fed. Dynamic costs and speed limit are useful too because, since those bots aren't very good at hunting things, you want to help them if they can't stay alive by themselves.

The first step for zerobots is learn to reproduce. Then they need to move and shot. Once they learn these three steps and they don't do dumb things like fixing themselves they are more or less ready to be run as heterotrophs. The fun part is to pick some of these after a long time and try to guess how their code works... which usually I couldn't tell. Zerobots tend to use brute force methods to achieve their goals, like increasing values of random sysvars until they hit one useful. The bots in the sim I'm evolving now have never used a '.repro store' code.
Title: zerobot sim
Post by: Numsgil on January 19, 2007, 07:03:20 AM
Excellent summary Maca, couldn't have said it better myself!
Title: zerobot sim
Post by: EricL on January 19, 2007, 01:45:59 PM
I would be extremenly interested in hearing more from anyone who has evolved any complex trait which leverages conditional logic (of any geneic structure) from a zerobot starting organism without hand-coded gene contamination.  To my knowledge, it has yet to be accomplished, particularily given the recently discoverred limits on the maximum time sims could possibly be run pre 2.42.9t.

I define a 'complex trait which leverages conditional logic' as any evolved trait where it can be demonstrated that a bot does different things as a function of different environmental conditions.  Matching velocity, stopping next to or and closing on a stationary bot, accurate targeting, delibert movement torards or away from a shape are all examples.  Reproduction attempts every N cycles, constant or cyclic movement, constant or cyclic shooting, constant or cyclic spinning, like orientation due to environmental factors are all examples of traits which do not use conditional logic.
Title: zerobot sim
Post by: -venom- on January 20, 2007, 11:03:29 PM
omg I have to try this

could some one explain how to get one going (like setings and a starting bot)?
Title: zerobot sim
Post by: Endy on January 21, 2007, 01:21:58 AM
I think it'd probably learn to share feed first. It's relativly easy for them to randomly form ties. Then simply store any large value into sharenrg and they'd receive the maximum nrg of other bots tied to them.
Title: zerobot sim
Post by: -venom- on January 23, 2007, 09:11:24 PM
ok what exactly does a zero bot look like?
Title: zerobot sim
Post by: EricL on January 23, 2007, 10:32:18 PM
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Title: zerobot sim
Post by: -venom- on January 24, 2007, 06:12:11 AM
Quote from: EricL
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

o ok



now I feel stupid I thought it needed cond start stop
Title: zerobot sim
Post by: EricL on January 24, 2007, 09:30:21 AM
So did I not so long ago.  I'm such a smart ass some times.  

About the only thing to be aware of is that the longer you make the string of 0's of the starting bots (and the more of them you start with) the fewer cycles it will take for a mutation to hit upon a replicator.  Only point mutations occur outside reproduction, so I suppose you could start with just:

0 0

and wait for

300 inc

to evolve and then for reproduction time mutations to grow the genome via insertions, but that will take a long time.
Title: zerobot sim
Post by: shvarz on January 24, 2007, 11:09:11 AM
Maybe it's just me, but I tried using

300 inc

and that did not work for me.  You need the start command

start
300 inc

So, I think starting with just "0 0" is not going to work at all.
Title: zerobot sim
Post by: EricL on January 24, 2007, 11:30:01 AM
It's not you.  You are exactly correct.

The finite state machine that handles DNA execution gets initialized to be in the 'clear' state before beginning the execution of each bot's DNA which basically means that everythig in the DNA will be ignored until some flow control statement is encounterred which toggles the FSM's state into one of the three other FSM states:  'cond', 'body' or 'bodyelse'.  Boolean operations only work in the cond state, store operations (including inc and dec) only work in the body or bodyelse states.

So, currently the minimal zero bot must have three 0's and the smallest possible replicator I can think of will be either

start 300 inc

or

else 300 inc ' the else statement also toggles the FSM into a state where stores can be performed.

I stand corrected.

We could decide to make the inital FSM state the 'body' state, which would allow

300 inc

to work.  But as it stands, only the DNA that follows a flow control statement will do anything.
Title: zerobot sim
Post by: Sprotiel on January 24, 2007, 01:24:21 PM
Quote from: EricL
else 300 inc ' the else statement also toggles the FSM into a state where stores can be performed.
This one doesn't work: cond flag is initialised to True.
Title: zerobot sim
Post by: EricL on January 24, 2007, 01:39:38 PM
Ah, yes.  I stand corrected (again).
Title: zerobot sim
Post by: Light on January 24, 2007, 02:25:14 PM
so should one start a zero bot sim with 'start 0 0 0 0 0 0 0 0' or just '0 0 0 0 0 0 0 0'?
Title: zerobot sim
Post by: Light on January 24, 2007, 02:29:45 PM
I just re read the conversation and to awnser my own question its the 2nd one but it needs to evolve the start?
Title: zerobot sim
Post by: EricL on January 24, 2007, 03:46:07 PM
You got it.  

In my opinion, the second is preferred even though yes, it must evolve the start ahead of any reproduction logic.  My reason is that starting from pure 0's imparts the least information and therefor maximizes flexability in how evolution may proceed.   One may argue that the start does not add much information, but it adds something.  It gets placed at the beginning for one thing, where evolution probabily would evolve junk DNA ahead of it which could possibly come into play later.

That said, it's a minor nuance to be sure.  In particular, entires whose ancestrial genome contain a start are elligable for the conditional logic evolution prize.
Title: zerobot sim
Post by: EricL on January 24, 2007, 04:01:22 PM
Just FYI, I want to point out that it is technically possible for a bot with a completly empty genome to replicate and eventually evolve.

There are at least two ways I can think of for an empty genome bot to reproduce.  One is through waste build up triggerring the altzheimers routine which results in a positive value being written to one of the reproduction locations.  The other is via info shots from another organism in the sim such as a mutated nrg supply veggie.

Enough of these externally forced reproductions (with the probability of associated insertion mutations) and a bot with a genome long enough to eventually point-mutate into a self replciator will emerge.  It might take a very very long time however.