Author Topic: Zerobot sims  (Read 8700 times)

Offline Zinc Avenger

  • Bot Builder
  • **
  • Posts: 56
    • View Profile
Zerobot sims
« 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.

Offline Testlund

  • Bot God
  • *****
  • Posts: 1574
    • View Profile
    • Games And Electronica
Zerobot sims
« Reply #1 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
« Last Edit: November 15, 2006, 02:39:43 PM by Testlund »
"God is an ever receding pocket of scientific ignorence." - Neil DeGrasse Tyson

"God is a kid with an ant farm" - Constantine

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7714
    • View Profile
Zerobot sims
« Reply #2 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.

Offline Zinc Avenger

  • Bot Builder
  • **
  • Posts: 56
    • View Profile
Zerobot sims
« Reply #3 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?

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7714
    • View Profile
Zerobot sims
« Reply #4 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/

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Zerobot sims
« Reply #5 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.
Many beers....

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Zerobot sims
« Reply #6 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.
« Last Edit: November 16, 2006, 11:44:44 AM by EricL »
Many beers....

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7714
    • View Profile
Zerobot sims
« Reply #7 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

Offline EricL

  • Administrator
  • Bot God
  • *****
  • Posts: 2266
    • View Profile
Zerobot sims
« Reply #8 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...
Many beers....

Offline Zinc Avenger

  • Bot Builder
  • **
  • Posts: 56
    • View Profile
Zerobot sims
« Reply #9 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!

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7714
    • View Profile
Zerobot sims
« Reply #10 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.

Offline Zinc Avenger

  • Bot Builder
  • **
  • Posts: 56
    • View Profile
Zerobot sims
« Reply #11 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?
« Last Edit: November 24, 2006, 10:33:42 AM by Zinc Avenger »

Offline Numsgil

  • Administrator
  • Bot God
  • *****
  • Posts: 7714
    • View Profile
Zerobot sims
« Reply #12 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?

Offline Zinc Avenger

  • Bot Builder
  • **
  • Posts: 56
    • View Profile
Zerobot sims
« Reply #13 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.

Offline Testlund

  • Bot God
  • *****
  • Posts: 1574
    • View Profile
    • Games And Electronica
Zerobot sims
« Reply #14 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.
"God is an ever receding pocket of scientific ignorence." - Neil DeGrasse Tyson

"God is a kid with an ant farm" - Constantine