Darwinbots Forum
Welcome To Darwinbots => Newbie => Topic started 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?
-
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.
-
Excellent summary Maca, couldn't have said it better myself!
-
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.
-
omg I have to try this
could some one explain how to get one going (like setings and a starting bot)?
-
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.
-
ok what exactly does a zero bot look like?
-
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
-
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
-
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.
-
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.
-
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.
-
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.
-
Ah, yes. I stand corrected (again).
-
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'?
-
I just re read the conversation and to awnser my own question its the 2nd one but it needs to evolve the start?
-
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.
-
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.