Darwinbots Forum

Bots and Simulations => Evolution and Internet Sharing Sims => Topic started by: Zinc Avenger on November 15, 2006, 05:26:57 AM

Title: Zerobot sims
Post by: Zinc Avenger on November 15, 2006, 05:26:57 AM
I've been running some zerobot sims for a while now and I can't say I've actually managed to get much in the way of evolved useful characteristics. Apart from the one time a bot managed to place its entire dna into a virus and transfer about 700 copies into a single veggie, which then took over the sim...

Anyone else managed to get anything interesting or useful? How about we collaborate a bit and if you get a viable bot (even mildly!) on a zerobot sim, post the bot here and perhaps us other zerobot-simmers can run sims on that bot.
Title: Zerobot sims
Post by: Testlund on November 15, 2006, 02:37:16 PM
I think this is a pretty good one. I call it ZeroVeggie. It can reproduce and keep a stable population with some morphological costs and ageing cost. Unfortunately I've been having a memory error issue that I hope Eric will be able to fix soon, so I haven't been able to run this long enough to find out what ageing costs are best for it, but morphological costs should work with same settings as most other bots can handle. I use the same morphological costs for all kinds of bots I'm running. But to manage to evolve a heterotroph that can hunt for food we need DB to be stable enough to run for months.

 0 0 0 *.up and
 rnd store
 inc
 dup <=
 <=
 sub *.up not
 store
 inc
 and
 dup -218 dist abs angle angle angle ~ rnd <=
 start
 *-11 and
 angle add or
 *26 sub dist start
 *.robage 0 <
 mod <=
 start
 *.up and
 angle rnd store
 sqr *.robage 25 or
 0 rnd =
 *.up ~ and
 and
 cond
 angle *-22 floor dup dist *.robage -92 0 rnd <=
 cond
 start
 *.up not
 <
 sqr ~=
 -218 pow and
 *.robage angle ~ !%=
 else
 not
 angle dup dup *26 div *.robage 0 dup -425 ^ dec
 store
 *29 197 dist angle rnd >
 *.up rnd 2 *.up mult store
 and
 dist <
 add >=
 1 and
 angle 0 *.up angle ceil rnd store
 inc
 dup dist *-5 0 rnd or
 <
 start
 *.up not
 store
 add -218 -- angle & ~ <
 -- pow floor ceil *.up ceil mult *-164 >> store
 *.robage 597 737 xor
 dec
 *-9 ~ and
 angle cond
 pow not
 ~ pow pyth and
 inc
 angle ceil mult store
 *-164 cond
 ^ ~ *49 !~=
 -- pow dist angle not
 ~ <
 -- pow =
 dist <
 *.up 1 not
 *.dx ~ - pow dist -149 sgn <=
 mult mod store
 -3 add xor
 ceil dist ~ *.dn cond
 angle not
 ~ -- cond
 angle and
 not
 and
 *993 -- pow dist else
 store
 ^ xor
 *.sx <
 xor
 angle cond
 angle not
 ~ & pow dist >
 ceil *.up sqr mult *.robage else
 angle *.up ~ -- cond
 angle store
 ~ -- pow not
 & -- rnd inc
 2 add xor
 ~ inc
 >> !=
 add cond
 - ~ -- pow 1 cond
 angle not
 ~ *.aimleft pow cond
 dist dist *-4 and
 & =
 cond
 %=
 store
 ++ xor
 and
 *421 <
 angle
Title: Zerobot sims
Post by: Numsgil on November 15, 2006, 04:59:28 PM
Viruses are quite common in ex nihilo sims.  You wouldn't think so, but apparently viruses are done just right that evolution can figure them out before it can figure out reproduction, movement, eating, or just about any other useful strategy.
Title: Zerobot sims
Post by: Zinc Avenger on November 16, 2006, 08:09:04 AM
Yeah, who'd've thunk it? Viruses aren't used much by human bot designers but evolutionary sims take the idea and run with it. The problem with viruses I've found is like my opening post, I get hundreds of viruses infecting the same bots, leading to dna 7000 units long, bringing the entire thing to a grinding halt.

I've been focussing on the animal side of things, I have created a "zeroVeg" which I used in these sims which is nothing more than

start
0
stop
end

with mutations disabled and then setting max veggies to one more than the repopulation threshold. This means that the veggies aren't drawing much computing power (less even than Alga Minimalis).

I've got an old laptop which can maintain a zerobot sim (although I like the term ex nihilo and will now use it instead!) for weeks on end, and I will put ZeroVeggie in to bake for a week or so to see what happens.

I've actually avoided putting in aging costs altogether, I reasoned that since these bots are going to be spending a lot of cycles at least initially sitting there waiting to evolve some dna to do anything at all, the aging cost would kill them. I normally set up dynamic costs to maintain about twice the initial seed population with generous boundaries. Do you find that aging costs don't kill everything like I thought?
Title: Zerobot sims
Post by: Numsgil on November 16, 2006, 10:19:04 AM
ex nihilo has a delicious irony when used this way

Ideally you'll have costs only to prevent your bots from doing stupid things (like having a 7000 long genome ).  The more freedom your bots have to experiment the better.

Ring up the costs only when you think you have a population starting.  Once reproduction comes into the equation, natural selection should start working/
Title: Zerobot sims
Post by: EricL on November 16, 2006, 11:39:11 AM
Quote from: Testlund
Unfortunately I've been having a memory error issue that I hope Eric will be able to fix soon
I have been trying catch this in the IDE without result.  I did fix a coupel of bugs in 2.42.9a that coudl be the cause including an allocation inside a long loop, so give it a try.
Title: Zerobot sims
Post by: EricL on November 16, 2006, 11:42:52 AM
Quote from: Zinc Avenger
The problem with viruses I've found is like my opening post, I get hundreds of viruses infecting the same bots, leading to dna 7000 units long, bringing the entire thing to a grinding halt.

Would people be interested in seeing a threshold for the DNA Upkeep cost such that below the threshold, there was no cost per bp but for every bp above the threshold, the per cycle cost is assessed?  Bascially, if your viral load gets high enough, you die.
Title: Zerobot sims
Post by: Numsgil on November 16, 2006, 01:00:23 PM
It could be interesting, but thresholds are starting to get a little cluttered in the GUI.  They're a little confusing for new users.

Maybe if we bring some custom costs into a Lua script?  Lua is syntactically similar to Visual Basic, and I don't think it would be all the difficult to do something this simple.  The scripts could even be editable inside the options panel.

That way you can set costs any which way you like, without causing potentially confusing problems for new users with 8 text fields and no clue what they do
Title: Zerobot sims
Post by: EricL on November 16, 2006, 09:28:42 PM
Just FYI, I'm still working on the new user experience.  My plan is for the exe to stand alone and when you start it, it exploads some standard bots and a stable, default sim and starts it...
Title: Zerobot sims
Post by: Zinc Avenger on November 17, 2006, 08:56:11 AM
Yes I think a cost per bp over a certain threshold would be a good thing, perhaps a similar to aging costs with a log.

Then again, would this just turn viruses into an offensive weapon? Slap enough copies of your own dna into an adversary and they'll be crippled by the dna length costs!

I think an important thing to think about is why viruses are so often exploited by ex nihilo sims. It seems to be more common than shooting -1 shots from what I've seen so far! (I'm willing to concede that in a situation like this, I might just be at the thin end of the bell curve and my experience might not be typical)

While I personally would like to see a Lua script managing costs (and indeed everything else!) I think it would scare off even more people than a large screen of input boxes. Perhaps this would be better as an alternative or a supplement to the current system, but the layout and the explainations could be better. A large number of common sims on a drop-down menu would be a good idea. DB almost scared me away, and I'm not exactly "the n00b" when it comes to computers!
Title: Zerobot sims
Post by: Numsgil on November 17, 2006, 10:17:25 AM
Part of the problem is getting different drop down boxes to agree with each other.

There were all sorts of problems setting up the "advanced physics" panel and the more standard physics interface.

I don't have a good solution, but levels of abstraction isn't it.  Each control in the simulation needs one area that controls it.   More than that just creates more problems than it's worth IMO.
Title: Zerobot sims
Post by: Zinc Avenger on November 24, 2006, 10:26:40 AM
I've been experimenting with ways of slightly speeding up the process of getting something worthwhile from a zerobot, and I've come up with something useful, but I don't know if this would be considered a "cheat" and get me hounded out of town by a bunch of pitchfork-and-torch-wielding ex nihilo simmers!

I only have the one bot type in the sim, a zerobot with a slight modification - the line 50 .repro store is added about half way so it will constantly reproduce with 50% nrg offspring. This bot "zeroHeadstart" is introduced into a sim as the only bot, with Blocked set off and Autotroph set on. Veggies are capped at about 200, repopulation set to about 10 with a repopulation delay of 100 cycles. The sim is set up to feed 2 nrg/cycle to autotrophs, all as nrg (no body). Then in costs, all costs zero, except an aging cost of 2 nrg/cycle to start when the bot reaches 1000 cycles old, no increases. So what happens here is that for the first 1000 cycles of a bot's life, it is given 2 nrg/cycle to get it started, then it's on its own and gets no additional nrg input in this manner.

What will happen is the first 30 bots will reproduce. Then the sim will do nothing for a while because the offspring and the parent are now blocking one another. After a little while, point mutations will make one of them move... and at that point, that bot gets to reproduce so we've selected for movement. The population will reach the veggie cap pretty quickly, and then stay stationary, until one of them evolves a way to feed off and kill others, whereupon that bot suddenly has an advantage and will take over the sim over the next hour or so. When it has proven its superior fitness by making up a sizeable percentage of the population, save out a healthy-looking specimen and put it into a new sim with alga minimalis, make the evolved bot no longer a veggie and introduce F1 costs, with no costs below 50, reintroduce above 100. Then let the sim run from this foundation.

Yes it is a slight fudge, starting from a not-entirely-helpless bot, and the sim is set up to seriously encourage certain traits, but apart from the one little nudge at the beginning the result is entirely evolved. In fact, I find that the original 50 .repro store vanishes after enough cycles have passed in the second sim, unconditional reproduction is selected against. The current example of this bot I've been baking has put a .timer in the dna nearby that I think controls reproduction.

Sorry for the long post, its a little complicated but may inspire ideas.

So, do I get the pitchfork-and-torches treatment?
Title: Zerobot sims
Post by: Numsgil on November 24, 2006, 11:25:05 PM
While it's not necessarily an ex nihilo sim, it's certainly an interesting idea.  Have you run a sim like this, can we see any DNA?
Title: Zerobot sims
Post by: Zinc Avenger on November 27, 2006, 10:51:29 AM
Sure, I'll bring in my current top performer tomorrow morning. It acts a little weird (they end their lives in an explosion of cancerous reproduction, which seems to occur randomly - even in sims without mutations! I guess this must be a survival trait somehow. Natural selection works in mysterious ways, sometimes), but who knows - it may have straightened itself out after a few more hours tonight.
Title: Zerobot sims
Post by: Testlund on November 28, 2006, 03:39:41 AM
Quote from: EricL
Would people be interested in seeing a threshold for the DNA Upkeep cost such that below the threshold, there was no cost per bp but for every bp above the threshold, the per cycle cost is assessed?  Bascially, if your viral load gets high enough, you die.

I whould like to see this implemented. As you've said earlier it's not realistic to tax DNA, but it's needed somewhat to prevent the program from freezing.
Title: Zerobot sims
Post by: Zinc Avenger on November 28, 2006, 07:07:43 AM
How about a cost for dna length during reproduction then? Subtract a rate dependent on dna length from the child's and parent's nrg and stupidly long dna suddenly becomes a lot less attractive - but not actually lethal.
Title: Zerobot sims
Post by: Zinc Avenger on November 28, 2006, 08:02:49 AM
Okay, here's my current leading evolved bot from the sim described above.

else
1 1 15 store
12 0 0 -3 1 -32 start
add 23 *.robage 24 57 mult sub add .repro store
cond
start
0 and
1 -10 -24 angle 13 .up store
stop
9 1 1 -16 start
start
<
0 1 not
.shoot dec
rnd dist -7 -6 1 2 0 start
stop
-2 -1 - 8 0 1 1 *20 1 9 2 -16 0 stop
start
20 0 angle 8 13 0 1 11 & 23 -23 1 add cond
stop
else
1 1 1 *.up 0 -1 and
*.up 0 1 1 %=
else
start
16 add -1 0 30 start
1 -13 0 0 1 0 1 *-9 start
1 1 11 19 1 7 add and
store
.up inc
0 8 -1 *-18 start
1 0 angle 1 15 5 start
angle *-4 and
~ 0 *.up inc
sqr


Strangely, the repro command was placed in the middle of the dna, so either the reproduction commands migrated to the top of the dna somehow or a mutation wiped out the original repro instruction and later on created a new one higher up the dna in a sterile bot.

This bot reproduces every 1300 or so cycles, and it is being plunged into sims with slowly-increasing costs to try and temper it a little.

I think it overflows the value in .repro based on its age until it happens to hit a >0 value.
Title: Zerobot sims
Post by: Sprotiel on November 28, 2006, 02:52:07 PM
Quote from: Zinc Avenger

23 *.robage 24 57 mult sub add .repro store
That's fairly simple for evolved DNA: it means (23 + *.robage - (24 * 57)) .repro store, that is (*.robage - 1345) .repro store.

Simple and effective!
Title: Zerobot sims
Post by: Numsgil on November 28, 2006, 10:57:49 PM
I agree.  That's a prime example of some mutated DNA at work.  It looks like it's trying to arrive at the magic 1000 number that would be the start of when it loses nrg.
Title: Zerobot sims
Post by: Testlund on November 29, 2006, 05:24:14 AM
Quote from: Zinc Avenger
How about a cost for dna length during reproduction then? Subtract a rate dependent on dna length from the child's and parent's nrg and stupidly long dna suddenly becomes a lot less attractive - but not actually lethal.

Yeah, that might be even a better idea. It could be imagined as a complication to move all that DNA over to a new bot, kind of.  
Title: Zerobot sims
Post by: Zinc Avenger on November 29, 2006, 07:02:08 AM
Quote from: Numsgil
I agree.  That's a prime example of some mutated DNA at work.  It looks like it's trying to arrive at the magic 1000 number that would be the start of when it loses nrg.

Ah, that would also explain why it loses this trait fairly quickly when I put it into the second sim in which it isn't a veggie - it no longer has any reason to hold off for at least the first 1000 cycles. I was wondering why this particular bit of dna is so tenacious in the first sim but just evaporates in a few tens of thousands of cycles in the second one.

That's some comparatively sophisticated behaviour from a randomly evolved dna script. Now if only I could find a way to select for using eyes...

BTW, I've started referring to this type of carefully-managed environment sim as a "bonsai" - carefully managed simulations intended to evolve a particular behaviour or set of behaviours.
Title: Zerobot sims
Post by: Numsgil on November 29, 2006, 03:13:13 PM
An appropriate term I think.
Title: Zerobot sims
Post by: shvarz on November 29, 2006, 04:19:10 PM
I got a bit curious in this zerobot thing and started a sim with "zeroveggie" that had just one gene:

cond
*.nrg 2000 >
start
50 .repro store
stop

And then a string of random numbers (just to give the evolution something to work with).

It took just 300,000 cycles to arrive to:

 stop
 *.nrg 2000 angle >
 start
 50 .repro store
 2 3 4 5 9 8 7 .aimleft store

So, they figured out pretty quickly the need to rotate for efficient reproduction
Title: Zerobot sims
Post by: Jez on November 29, 2006, 04:41:11 PM
Damn nice to see instances of intelligent mutations!

/me "the only way is up..."
Title: Zerobot sims
Post by: Zinc Avenger on December 01, 2006, 06:38:09 AM
Okay, anyone got any ideas to come up with a sim to encourage development of some form of use for eyes?
Title: Zerobot sims
Post by: Numsgil on December 01, 2006, 11:40:05 PM
I was just thinking the same thing.  I don't think I've ever seen a mutation that learned to use eyes.  Darwinbots isn't alone in this, I know other simulators have similar issues with their vision systems.

Part of the problem is that selecting for actions is pretty easy.  But eyes are senses instead of actions, and I'm not sure you can select for a sense.  Or if there's a way, I don't see it right away.
Title: Zerobot sims
Post by: EricL on December 01, 2006, 11:55:24 PM
Quote from: Zinc Avenger
Okay, anyone got any ideas to come up with a sim to encourage development of some form of use for eyes?

Where do you want to start?  From a zero bot or maybe a hand coded bot just on the verge of using vision or somethign that can see but not well?

Maybe set up the physics and costs so that movement is super costly using a high "translational Bang" (movement) cost or perhaps maknig ties is super expesive or something like that which encourages the linkage of the expensive action to the eye values.  Don't move unless you see food, etc.
Title: Zerobot sims
Post by: Testlund on December 03, 2006, 08:46:37 AM
Quote from: shvarz
I got a bit curious in this zerobot thing and started a sim with "zeroveggie" that had just one gene:

cond
*.nrg 2000 >
start
50 .repro store
stop

That's no zeroveggie. That's an alga minimalis kind. It should ONLY have zeros to start with.  
Title: Zerobot sims
Post by: shvarz on December 03, 2006, 12:00:20 PM
Hm, how is it going to reproduce then?  It has to have at least repro gene for evolution.  It is pretty stupid to wait for evolution to happen if you don't have reproduction.

Anyway, my veggies learned to move now.  Here is a representative recent genome:

stop
 *297 pow >
 start
 65 .repro store
 sqr xor
 2 5 *-25 4 1 .dn store
 7 8 6 *-386 2 3 5 add 6 start
 store
 20 9 dist ~ 8 9 * * -5 -- 2 9 56 .shootval store
 store
 99
Title: Zerobot sims
Post by: Testlund on December 03, 2006, 01:46:15 PM
Quote from: shvarz
Hm, how is it going to reproduce then?  It has to have at least repro gene for evolution.  It is pretty stupid to wait for evolution to happen if you don't have reproduction.

I was just pointing out what a zerobot is imo. With help of point mutation it will eventually mutate into a replicator. You can set the value of point mutation low in the beginning and then change to a higher value as soon as you got a good replicator. When this idea was brought up in the first place it was to see if a replicator could appear by itself.
Title: Zerobot sims
Post by: shvarz 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.
Title: Zerobot sims
Post by: Jez 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.
Title: Zerobot sims
Post by: Numsgil 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.
Title: Zerobot sims
Post by: shvarz 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
Title: Zerobot sims
Post by: EricL 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.
Title: Zerobot sims
Post by: EricL 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.
Title: Zerobot sims
Post by: Numsgil 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.
Title: Zerobot sims
Post by: Testlund 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.
Title: Zerobot sims
Post by: Jez 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).
Title: Zerobot sims
Post by: Zinc Avenger 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.
Title: Zerobot sims
Post by: Testlund 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?  
Title: Zerobot sims
Post by: Zinc Avenger 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.
Title: Zerobot sims
Post by: shvarz 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.
Title: Zerobot sims
Post by: Numsgil 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.
Title: Zerobot sims
Post by: Testlund 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.
Title: Zerobot sims
Post by: Jez on December 04, 2006, 01:51:54 PM
There's no reason to wait till next year, if you are all running these sims now, even if they are bugged, it'll just help find the bugs quicker. No reason that you can't start another zerobot from scratch next year.

The (Proto) Zerobot league Rules:

1. A zerobot has originated from something with just zero's (any length).
2. Any bot in the league can be further evolved by anybody else, (means you can use bots that have already evolved .repro)(unless individual bots have amount of cycles their family evolved you can't prove that an individuals code has evolved that long, seems pointless to insist on min evo cycles before bot is valid)
3. Entries need some sort of name/description that helps describe their geneology (you lot decide what details they are going to need)
4. Hand editing of DNA strictly forbidden!
5. No genetic contamination from other bots! (other zerobot species added to sim ok?)
5. Can deliberately kill as many bots as you like and change the enviroment as much as you wish.
6. You lot decide what the settings for league should be (you'll need to save this to a settings file as can't set in same way as F1 atm)
7. Till you all decide on a better one, non mutating, traditional algae will be used for league.
8. Top bot will be most competitive or longest surviving. (If it's 50/50 for too long top bot stays top)

Will check leagues topic and post how to run leagues if not there.
Bots will be put in Mutated part of Bestiary with (ZB) added to title for ID

If I can work out how to do it I'll start a new sub forum just for this, if not then an admin will need to.

(almost a quote) Although it will take the form of a competitive league, the overall goal will be to push the cutting edge of naturally evolved bots as far as it will stretch.

EDIT

I can't add new or change old topics, (nor move posts it seems) until one of our angelic    admins sets up a zerobot topic for the leagues all info will be in the F1 leagues forum and entries should be put in the starting gate as normal. (A zerobot evolved to use .repro would be good)
How to run leagues has also been posted in the F1 forum.
Title: Zerobot sims
Post by: Zinc Avenger on December 05, 2006, 06:13:48 AM
After some consideration I've decided that the reason why bots don't evolve to use eyes is because the data returned by eyes requires processing to be meaningful.

In order for the dna to do something with the eyes, it first has to access the eye value, which is reasonable and I'm sure happens as often as accessing any other read-only sysvar. The problem then is that the bot needs to then evolve something useful to do immediately after, and make it conditional on the value of the eye. Dna seems to have real difficulty evolving conditional structures, instead relying on invalid inputs to turn off actions (like earlier in this thread, my example which stored negative numbers into .repro until it hit a positive valid number). The problem with this seems to be that the range of returns which an eye can vary so considerably that the chances of evolving useful processing to make sense of it is slim, there's no practical way to evolve a structure that can take a positive integer from zero to the upper limit of eye returns (can't remember what it is off the top of my head... d'oh!) and massage it so it comes out as a -1 or -6 for shoot, or a value to store in .sx or whatever. It is far easier for bots to evolve a continual shooting structure or a random search pattern than it is for a bot to actually use its eyes.

I'm all for sophistication, but perhaps in this case adding an alternative eye would be useful. I have no doubt that given sufficient time and evolutionary pressure we will evolve something that uses eyes properly. I do have doubts that this will happen without billions of cycles of evolution.In what we laughingly call the real world, simpler organisms use much simpler eyes than the complex ones you're currently reading this post with. While less capable than complex eyes they are useful, particularly as they don't require the processing that complex eyes require.

So would it be a good idea to add something similar to DB? Something like four eyes (forward, back, left, right) which just return a true or false (1 or 0) if they can see something. This way simple eyes would not be able to replace standard eyes (particularly if they cover such a large angle) but they would be able to supplement them in a hand-coded bot, particularly if unlike standard eyes they're reset to 0 when there's nothing in view.  

What do you think?
Title: Zerobot sims
Post by: Testlund on December 05, 2006, 06:57:36 AM
I think I agree with this, just 4 eyes in 4 directions. I imagine the eyes not as real eyes, more like sensing organs to smell or taste the environment. If the bot encounters something it should only be able to tell if it's a different species, conspecies or a shape and then decide how to act, like turn to attack it or move away from it. But if it wants to feed on something it sees it must be able to approach it so it can aim at it properly. Just 4 eyes whould need to have a large vision radius to be useful.
But I'm also a little curious how the eyes as they are now will cause the bots to evolve. I found I have bots with both the old static coneshaped vision radius and others with the new moving eyes.
Title: Zerobot sims
Post by: Numsgil on December 05, 2006, 09:25:42 AM
Part of the problem is that eyes don't really return a good range.  Most sysvars have a meaningful value in [-1000, 1000].  I've certainly seen rnd being used in genes, so I don't see why eyes wouldn't be used as a source of random numbers if nothing else (other than that its easier to use rnd than to read back specific memory locations).
Title: Zerobot sims
Post by: MacadamiaNuts on January 18, 2007, 06:07:26 PM
Yo. I was concerned too by the eyes problem as during my last zerosim I didn't see even one eye sysvar in any bot.

The problem I think is that the eyes sysvars are placed in a bad range. There aren't many consistent ways to get a 500 - 509 values to store in. If eye5 was sysvar 1 it would be as common as .up is currently in evolved bots.

I would like a second set of eye vars in as lower as possible sysvar values... maybe an eye that matches the bot colors versus the light intensity (for pond mode) and returns the visibility. 255+255+255 is the most visible in 0 light, while 0+0+0 would be the most visible in full light.

Oh, and here's one of the zerobots in my sim now. It's running as heterotroph under about 30% the F1 costs (dynamic, plus increasing age cost), with very high mutation rates, fixed shot energy and zero costs below 30. The sim is the smallest size, with 60 zero veggies. Bot population moves between 35 and 50. Dunno how much time it has been running, since I manually selected bots and restarted it several times.

Basically it moves forward eating whatever crosses its path and creates 1 average offspring per 150 cycles.

Code: [Select]
Removed: I'll post a more evolved/optimized one someday... after a few million cycles more. :P
Title: Zerobot sims
Post by: MacadamiaNuts on January 18, 2007, 06:11:10 PM
I like a lot the .shoot dec gene.

Don't ask me where is the reproduction code. xD
Title: Zerobot sims
Post by: Numsgil on January 19, 2007, 07:08:20 AM
When Eric gets 2.43 finalized, I'm going to take a crack at writing a stripped down DNA version for use in zero bot sims without things like bit manipulators.  I figure, evolution doesn't care wether we can read its code or not, so we should nudge it towards readibility by removing or simplifying code that's harder to decipher we'll be doing ourselves a favor.
Title: Zerobot sims
Post by: MacadamiaNuts on January 19, 2007, 11:27:36 AM
 

That would be awesome. Some commands aren't even docummented in the wiki (like ~=). Those are too high level maths for evobots to use them as anything more than a modifier to get a different range of random values.

I find confusing too that the operations on the conditions stack and on the commands stack are mixed.
Title: Zerobot sims
Post by: EricL on January 19, 2007, 03:56:29 PM
I want to comment on two topics rasied earlier in this thread.

On the subject of the validty of starting an evo sim from a simple hand-coded bot with a single gene for reproduction versus a pure zerobot:  While it is true that one can easily calculate the probability of random point mutations acting upon a pure zero bot hitting upon a DNA sequence which results in a first replicator, it is incorrect to assume that starting with a bot with a hand-coded reproduction gene is equivalent to starting from the point where this first zerobot replicator emerges.  In fact, IMHO, the argument that using a hand-coded gene is simply a way to save time and bootstrap the inevitable is seriously flawed.

A hand coded gene, particularly one with conditional logic, represents significant genetic structural information above and beyond it's function.  Through sequence copy mutations, that structure can be utilized in areas other than reproduction and will influence many of the base architectural aspects of all descendents - aspects which might otherwise have evolved very differently, if at all.  By using a hand coded gene such as that listed above, one is bootstrapping not only reproduction, but effecient, conditional gene structure.

Evolving conditional genomic structure - the ability for a bot to do different things in respose to difference conditions- represents a significant milestone in zerobot sims, one that to my knowledge, has yet to be acheived.  Injecting such structure as a given into the starting organism therefor leaps over a key milestone no zerobot has yet acheived.  It is in essensce, Intelligent Design.

Regarding the lack of eye sysvars observed in evolved zero bot DNA, it should come as little surprise that eye values are of little use to evobots that have yet to evolve conditional genomic structure.  Since selection has no power to preserve sysvars in DNA sequences unless they have some influence on reproductive success, given the size of the base pair space, an absense of eye sysvars is not only understandable but to be expected.  Bots cannot make use of eye values until they have evolved some sort of conditional genomic structure.  Crawl, Walk, See.
Title: Zerobot sims
Post by: shvarz on January 19, 2007, 04:12:18 PM
What about just putting

start
.repro
inc


That is the simplest possible reproduction gene that carries no conditions or genetic structure, so your argument that this gene would help evolution of other genes is not important anymore.

On the other hand, I understand that some people have seen appearance of reproducers in complete zerobot sims.  Is that right?  So let's just post that particular reproducer for everyone's benefit and satisfaction to show that it can be done.  Then anyone who has concerns like yours can always go to that particular bot an start from it. Thus all the resulting zerosims will be kosher.
Title: Zerobot sims
Post by: EricL on January 19, 2007, 04:33:44 PM
That's better, it removes my main objection regarding conditonal logic, but there is still information there e.g. the fact that it uses the .repro sysvar (a very specific, targetted, effecient way to reproduce) and not .mrepro or 300 store or *.nrg inc or any other of a thousand difference (generally more bizarre, less targetted, less effecient) sequences that zero bots might and do stumble upon.  An analogy might be starting from DNA and rybosomes instead of from a self replicating RNA or some other simplier replicator.  Your giving descendents a big push down a specific evolutionary path.  Nothing wrong with that to be sure, you'll just end up with DNA based organisms instead of ones perhaps based on some other chemisty (bad analogy I know).  My point is simply that there is value in starting from a pure zerbot.

Replicators are easy to evolve from zerobots, takes about 10 million cycles.  No two are alike though.  It is truly startling how many different ways there are to replicate.  I am not exagerrating when I say there are thousands of different sequences, some of them amazingly novel and surprising with all sorts of evolutionary implications.  For example, a bot that replicates using 250 *.eye5 add inc will replicate only when close to others.  Starting from that sequence might lead down a different evolutionary path than others.
Title: Zerobot sims
Post by: MacadamiaNuts on January 19, 2007, 05:20:39 PM
Quote from: EricL
Replicators are easy to evolve from zerobots, takes about 10 million cycles.

No way! I start with <5 zerobots, 32x mutations and a very low value for point mutations and get a replicator in much less than a million cycles. You just need to be watching to manually pick it before it's ruined by a pile of DNA junk.

"Manual" selection works wonders when you aren't running DB on a fast machine.

I think a sysvar read/write inspector in the console, including at what bp they were called, would help to check which sysvars are used by the bot each cycle. Easier than trying to calculate what's going on in the code. Perhaps my bots are secretly using their eyes.
Title: Zerobot sims
Post by: EricL on January 19, 2007, 05:34:32 PM
Quote from: MacadamiaNuts
No way! I start with <5 zerobots, 32x mutations and a very low value for point mutations and get a replicator in much less than a million cycles. You just need to be watching to manually pick it before it's ruined by a pile of DNA junk.

Sorry, I was being breif.  You are right of course.  There are many factors which will infulence this.  Mutation rates are one.  So is the length of the starting zerobot 0 vector, the population of the sim, whether waste thresholds are used (altzheimers will cause reproduction) whether shooting veggies are used to provide nrg (they will mutate and shoot memory shots which will cause reproduction) and so on.  See my ealier post in this topic.

Quote from: MacadamiaNuts
I think a sysvar read/write inspector in the console, including at what bp they were called, would help to check which sysvars are used by the bot each cycle. Easier than trying to calculate what's going on in the code. Perhaps my bots are secretly using their eyes.
Have a look at the memory button on the robot properties dialog in 2.42.9u.  
Title: Zerobot sims
Post by: MacadamiaNuts on January 19, 2007, 07:00:51 PM
Woah! My zerobots evolved into tiefeeders!

I saw a yellow flash and suddenly noticed the veggies they were tied to were totally dry. They seem to be hitting the .sharenrg memory location and taking instantly all the energy from my 32k veggies!

[attachment=541:attachment]
Title: Zerobot sims
Post by: Jez on January 20, 2007, 05:33:05 AM
I have to say I was impressed with that first zerobot you posted Maca, I ran it under almost F1 conditions and while the speed factor almost always killed the babies every time I ran the sim a couple of bots tended to survive until the waste killed them.
Along the way I noticed that they altered their speed at a certain point and crawled around rather than speeding.
Their shooting was accurate and only used when in range of a target. ((EDIT) not true if you remove movement display vector you can see different!)
The babies didn't seem to be cyclic, more triggered by another (unknown) factor.

I noticed you had removed the code for it now, shame, but I have a copy so it's not lost.
I'll put it in the bestiary when there is a place/enough zerobots to make it worthwhile. Plus I still need to figure out how to name them so the development and origin is relatively easy to trace.  

I look forward to trying out the latest version you have posted!
Title: Zerobot sims
Post by: MacadamiaNuts on January 20, 2007, 02:01:32 PM
Ah well, I evolved it in a limited speed sim. I tried to let them have enough time to try and aim before passing by, but bleh, they learned to tiefeed instead. I've got the code saved somewhere, among a bunch of more evolved copies... I want to check them after a while and see which code hasn't changed (meaning it does something useful). When I watched the .up sysvar in the console I noticed it was being switched between a big value or zero... dunno why.

It's really weird code evolving there, no .repro, no .tie, no .sharenrg, and it still does all that. I think it's using angle to narrow ranges of values. If you think about it, no matter what you input 'angle' is going to return a 1-1200 (positive?) value.
Title: Zerobot sims
Post by: MacadamiaNuts on January 20, 2007, 02:23:43 PM
About naming zerobots, maybe we could use mithological names as source so we don't need to think much about it.
Title: Zerobot sims
Post by: MacadamiaNuts on January 20, 2007, 09:20:18 PM
The new memory inspector is awesome. I could tell what was going on with my zerobots.

The last one I checked is storing the value 448 in all 0 and 5 sysvars, (tho a few non read-only still remain at "0" value). That includes repro (300), tie (330) and sharenrg (830). This must be the awesome piece of code doing everything:

Code: [Select]
467 19 sub xor
 5 not
 -7 ^ -1 ceil and
 rnd <
 *15 .shoot dec
 inc
 and
 7 dist -7 >
 start
 -6 | !%=
 mult store
So, let's see...

467 19 sub = 448

Then there's a bitwise 5 -7 ^ (xor) that returns a -4, if I did understand right how those bitwises work.

-1 ceil may be junk or a safety check so no matter how the gene mutates, it never passes a positive value. It now does nothing, because -4 is under the ceiling.

Then the value is randomized. Values are [-4, 0].

*15 .shoot dec inc fires energy shots and should increase the 448 memloc, tho when I checked it, it didn't change. Actually I'm confused because on the memory inspector, the 7 sysvar is always 0 too.

Then there's a [-4, 0] 7 dist. I've got no idea about how dist returns values. If it's using the bot's distance to the [-4, 0] 7 coordinates, then .repro, .tie and .sharenrg are triggered with a little fuzzyness by where the bot is in the sim. Maybe it's trying to avoid reproducing and tiefeeding at the same areas.  

The bitwise -7 - 6 |  returns -5, which is multiplied to the distance value it got before.

I used this GNU online scicalc:
http://ostermiller.org/calc/calculator.html (http://ostermiller.org/calc/calculator.html)

Edit: I don't post this for the zerobot prize. It's not a true condition since it's only creating a fixed pattern, not reacting to unexpected changes in the enviroment.
Title: Zerobot sims
Post by: MacadamiaNuts on January 20, 2007, 10:13:28 PM
Other sysvars it must be hitting:

.mkvirus (335) .vloc (835)
.delgene (340)

Both invalid since there's no gene 448. A mutation in the value code, tho, may lead to a DNA lobotomy.

.tieang (450)
.tieang1 (480)
.tielen2 (485)

The 448 value may mean something there.  

.tienum (455)

Oh yeah. Tie value was 448. So .tienum is 448 too.

.tmemval (475)

Huh.

.out1 (800)

Cool if it was using .in1 at all.

.mkslime (820)

To avoid being tied? Though the slime stored this way degrades before more is stored again.

.backshoot (900)

I actually noticed this random backshoot. So this is why.
Title: Zerobot sims
Post by: Jez on January 20, 2007, 10:41:25 PM
Hehe, I was about to suggest you for prize when I double checked and found that the only reason I hadn't noticed the bots firing all the time was because of the 'movement vector' covering the shots. Does make me wonder why I only noticed shots when the bot was close to target though.

sysvar 7 is shootval so a value of 0 won't stop the shot.

*15 .shoot dec is the same as 0 .shoot dec or -1 .shoot!

Checking the wiki, dist returns the distance between two locations, I presume this is between x,y and x,y so it could be stripping three values off the stack and returning the distance, in unspecified units, between the two locations. I'm not sure that a negative location is valid so so am confused why this wouldn't always be higher than -7

The mention of 'bitwise' makes me lean on the gate and mutter things like 'when I was a young lad' seeing as that's stuff I have never used!

-----

When it comes to naming bots, the reason I like to insist on such things, it's down to time; when I first messed with DB I. Flamma was top bot, now it is an anachronistic side note. The Ancestor's Tale by RD traces our development from(/to) bacteria, I would like to make it easier for us to trace the same. If you ever take a break from DB then return perhaps you will notice the difference.

----

I have never run a zerobot sim (is yours a true zerobot?) Although I have asked for a representative sim setting it has never appeared, therefore a minor change, such as double the veg seems appropriate. I will re-add your previously posted bot later.

Your last bot was much better at reproducing but didn't reach such high body/nrg values IIRC.