Darwinbots Forum

Bots and Simulations => Evolution and Internet Sharing Sims => Topic started by: Beanspoon on March 28, 2012, 11:10:29 AM

Title: Randombot evolution sim
Post by: Beanspoon on March 28, 2012, 11:10:29 AM
The original post from this topic was modified by a moderator (not naming any names! ;) ), and I can't be bothered to re-write the whole essay so here's the gist.

I set up an evo sim with 100 1024bit randombots (1024 random integers between 1 and 1000), set as autotroph and left to mutate the ability to reproduce.

I used random integers instead of zeros because I noticed that point mutation only mutates numbers by small amounts, meaning that 1) even if luck was on our side and the number mutated only in the right direction, it would take a long time to reach 300, and 2) behaviour evolved would most likely only use the low array areas, as it becomes exponentally less likely for the higher array areas to be reached.  Using random integers means that the chances of any array location being used are equal.

After a surprisingly short number of cycles, the command .repro inc appeared, causing a cancerous reproduction pattern.  Please see further on for the next step.
Title: Re: Randombot evolution sim
Post by: Botsareus on March 28, 2012, 03:07:20 PM
Yes, please post the bot.



I am doing something similar evolving robots for F1 mode. I completely changed the mutation engine, see attachment. I don't like point mutations so I replaced them with a custom "copy error"; Although they evolve zero bots they also screw with robots that are already functional so I decided to remove them. I also attached my A1 trough A9 generations.



I would like to see your point mutation code as well, It might just convince me to change my mind.  :P
Maybe have that one activate if the robot did not reproduce ever after like 8000 cycles...
Title: Re: Randombot evolution sim
Post by: ikke on March 29, 2012, 01:12:33 PM
I used a random bot for the same reason. Generate 1000 random numbers in excel and use them. Point of concern: mutation rates need to be much lower, is my experience. You need to strike a balance between the time a mutation needs to settle  (or disappear, if bad) and new mutations appearing.
Title: Re: Randombot evolution sim
Post by: Panda on March 29, 2012, 02:06:39 PM
I used a random bot for the same reason. Generate 1000 random numbers in excel and use them. Point of concern: mutation rates need to be much lower, is my experience. You need to strike a balance between the time a mutation needs to settle  (or disappear, if bad) and new mutations appearing.
Yeah, this is right. It's usually even better to drop them after they're less than 1/32 using the bot's settings. It just gives time for bots who have good mutations to survive and bots with bad mutations to die.

However, I never really thought of using random-bots over zero-bots and it seems like such a good idea. I must try this at some point. It will probably be summer before I get around to it, though.
Title: Re: Randombot evolution sim
Post by: Botsareus on March 29, 2012, 05:56:09 PM
oh, he never moded the code, it simply not a true zero bot...

I have to look into doing this kind of stuff internally...



That problem seems to come from this line:

        Do
         ' Dim a As Integer
          .DNA(t).value = Gauss(IIf(Abs(old) < 100, IIf(Sgn(old) = 0, Random(0, 1) * 2 - 1, Sgn(old)) * 10, old / 10), .DNA(t).value)
        Loop While .DNA(t).value = old

I am going to try a mod...



el fixo:

Code: [Select]
If Mtype = PointUP Then
      Dim randomsysvar As Integer
        Do
                randomsysvar = Int(Rnd * 1000)
            Loop Until sysvar(randomsysvar).Name <> ""
        .DNA(t).value = sysvar(randomsysvar).value
      Else
        Do
         ' Dim a As Integer
          .DNA(t).value = Gauss(IIf(Abs(old) < 100, IIf(Sgn(old) = 0, Random(0, 1) * 2 - 1, Sgn(old)) * 10, old / 10), .DNA(t).value)
        Loop While .DNA(t).value = old
      End If

I feel better about using point mutations now
Title: Re: Randombot evolution sim
Post by: ikke on March 30, 2012, 12:49:51 PM
oh, he never moded the code, it simply not a true zero bot...

I have to look into doing this kind of stuff internally...



That problem seems to come from this line:

        Do
         ' Dim a As Integer
          .DNA(t).value = Gauss(IIf(Abs(old) < 100, IIf(Sgn(old) = 0, Random(0, 1) * 2 - 1, Sgn(old)) * 10, old / 10), .DNA(t).value)
        Loop While .DNA(t).value = old

I am going to try a mod...



el fixo:

Code: [Select]
If Mtype = PointUP Then
      Dim randomsysvar As Integer
        Do
                randomsysvar = Int(Rnd * 1000)
            Loop Until sysvar(randomsysvar).Name <> ""
        .DNA(t).value = sysvar(randomsysvar).value
      Else
        Do
         ' Dim a As Integer
          .DNA(t).value = Gauss(IIf(Abs(old) < 100, IIf(Sgn(old) = 0, Random(0, 1) * 2 - 1, Sgn(old)) * 10, old / 10), .DNA(t).value)
        Loop While .DNA(t).value = old
      End If

I feel better about using point mutations now
Looks good. Can I ask for another one: decrease mutation rate defaults by a factor of 10?
Title: Re: Randombot evolution sim
Post by: Botsareus on April 02, 2012, 03:51:47 PM
I have load/save mutation rates from file, but it's alpha... (I never added code to select the file location, it defaults to a specific file)
If you want, I'll post that too.
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 04, 2012, 06:24:00 AM
Hey, so far nothing interesting to report, the sim has restarted a couple of times due to all bots dying out, but otherwise all quiet.

In the current version of the sim, all animal reproducers have died out due to cancerous growth and no incoming energy, two veggies have survived due to mutation which has rendered the reproduction gene dormant, and the randombots are just sitting there slowly mutating and running out of energy.

As suggested I am using nrg per kilobody point to discourage cancerous veg, and I have costs on in order to make finding food a priority.  I know that it would probably be in my better interest to try to keep the bots alive, however I see no good way of doing that save forcing them to evolve the necessary code.  If I set them as autotroph or create a feederbot to feed them, they will become lazy and just let that happen.  Sometimes you have to be cruel to be kind...

I am going to adjust the sim to repopulate veggies if the population falls below 20.  That should give them plenty of chances to evolve into something a little more sensible, while keeping a decent supply of food around in case anything else felt like evolving...

I'll post the A1 code next time I get the chance, there's really not very much to see though, just a random string of numbers and commands with 58 .repro inc stuck in there somewhere.

Watch this space...
Title: Re: Randombot evolution sim
Post by: Numsgil on April 04, 2012, 02:03:53 PM
Ah!  I just realized I modified your first post instead of replying like I meant to.  I'm really really sorry; I've never done that before.  That was a lot of text to lose, and it was entirely my fault.  :redface:

I'll put my post here.  If you want to modify your original post to explain what you're doing again, that would be good (even if it's just a brief outline).

Quote
You're the patient sort, aren't you :P

I usually aim for no more than 1000 bots.  That keeps the cycles/sec at something slightly more reasonable (1-3 cycles/sec or so).  With cancerous reproduction, where they always try to reproduce every frame, once they get small enough the system won't let them reproduce anymore and they'll need to produce body (assuming you're only feeding them nrg from the autotroph system).  If your veggy feeding method is set to nrg per kilobody, you'll also discourage (or at least, not actively encourage) cancerous veggies.

A single cancerous starter bot, at 1000 body, will produce about 1000 bots before each bot's body gets so low that it can't reproduce anymore.
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 05, 2012, 08:54:31 AM
Haha I was a little confused - I assumed it was just a server error.  Yeah, I can't really remember what it was I wrote now...when I feel up to the task of re-writing my essay I will do ;)

In the meantime, I've decided to work on one thing at a time.  Currently, I'm setting up the sim to instead focus on stabilising the veggy version of my evobot, i.e. evolving out the current cancerous nature.  I will make a new topic with what I've achieved so far and where I'm going with it next.  Incidentally, I want to evolve interesting veggy behaviour so I need an interesting environment - does anyone know how to provide good settings for pondmode?  All the permutations I've tried dont seem to make any difference.  I want to have the veggies get enough energy if they remain in the upper part of the pond, but if they sink to the bottom they die.  I've tried light intensity 1 and sediment level 20 but even that doesn't seem to stop the ones at the bottom getting more than enough energy.  Also I set nrg per cycle to 0 so they were only getting energy from the pondmode source.
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 05, 2012, 09:41:59 AM
Milestone 1

Right, here is where I draw the line for the first milestone of this project.  Using randombots, I have successfully "evolved" a bot capable of reproduction.  This is being done by a .repro inc command buried in the random integers. This causes a cancerous reproduction pattern, where the bots attempt to reproduce every single cycle.

My next step will be to attempt to breed out this cancerous growth, giving something a little more controlled.  To do this, I will set energy to be distributed per kilobody point, which favours sensible veggies.  Costs will be set to F1 default, but with age cost set to 0.1, which will also discourage cancerous growth, and veggies repopulation threshold will be set to 100.  From previous dabblings with these settings, I have seen that the veggies that survive are the ones that evolve to turn off the area of code which allows them to reproduce.  Therefore after a while of cancerous growth, I will end up with 100 non-reproducing veggies, however most, if not all, will still posess the genetic code enabling them to do so.  Then, it's a simple matter of waiting for the point mutations to evolve a sensible control for the reproduction.

The F1 default costs will provide an evolutionary drive towards a sensible reproduction pattern for another reason as well.  Eventually, the Age cost will outstrip the amount of energy being collected by the bot, and it will begin to lose energy.  Therefore, each bot has a lifespan, and if it does not develop a sensible method of evolution in that time (and with age cost at 0.1, that's still 10 gigacycles per 1 energy) then both it and its genetic code dies.  Sort of a brute-force method, but I'm pretty sure it should yield results eventually.  If a veggie dies, it is replaced by a brand new cancerous veg, which will eventually simmer down into something useful again.  And so the cycle continues...

If you have any suggestions, please let me know and I will give them due consideration.  Most of my methods are hypothesis and a little trial and error, so if you have any useful experience, I'd love to hear it.  Also, as I mentioned above, does anyone know how to work pondmode, because I've had no luck so far.  I'd like to use it later.

I get the feeling I need a successful veg before I can start evolving something that can feed on veg...
Title: Re: Randombot evolution sim
Post by: ikke on April 05, 2012, 01:19:15 PM
I used the dynamic cost settings to provide evolutionary pressure. A target setting of say 400 bots is used. Below 400 bots the cost will decrease and above it will increase. Later on I did it manually to avoid see saw behaviour.
Title: Re: Randombot evolution sim
Post by: Numsgil on April 05, 2012, 01:27:22 PM
Common wisdom in the past has been to treat it a bit like gardening.  Start off with 0 costs.  That way no behavior is discouraged (well, bots can still find ways to kill themselves, but it's rather hard).  Make all the bots vegs, and keep the nrg/cycle to something very small (since you have no costs there shouldn't be need for much nrg).  And keep population controls so that the sim doesn't balloon to thousands of bots and wreck your cycles/sec.  Probably keep the field size small since you want a certain bot spatial density.

Eventually, you'll probably get a bot that can move in one direction, fire -1 shots constantly (and therefore feed), and reproduce (probably cancerously).  It just does everything constantly, but it's the beginnings of a rudimentary bot.  From that base, you then crank up costs (slowly) to provide additional pressures.  Maybe add in shapes to keep things interesting.  The main point is that the complexity of the environment has to keep up with the complexity of the bot.  Eventually you might be able to get a bot that can survive without being a veggy.  Then you switch the species off of being a veggy and introduce a feeder veggy.  Maybe just the original zero bots.  Alternatively, if you're aiming for a veggy species, you could drop in, say, animal minimalis, and have them cap their own population to some (very low number).  As the veggies get better at surviving you can crank up the population cap that the bots self impose.  Eventually replace the animal minimalis with a more aggressive hunter.

And while cancerous, constant reproduction isn't very sexy (:P), the most successful evo sim I ever ran actually did pretty well with a cancerous veggy being fed nrg per bot instead of per kilobody point.  If it learns to rotate and reproduce it can produce a sort of "foam" of bots with 1 nrg.  Animals can only really kill 1 bot per cycle, and they won't get that much nrg back from it, so they will have a hard time entirely killing a veggy field.  Maybe 10% of the veggy population survives to reproduce some more.  So you have this very narrow evolutionary window for success, and an insane number of generations, so you do get some actual evolution going on.  (If you turn on fixed bot radii, it makes this easier.  They'll form a regular lattice structure.).
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 05, 2012, 01:45:24 PM
There are so many different ways to induce evolution in the bots... I think I'm going to have to start a charity where people donate their old computers to me so that I can use them for extra processing power.  Try a different sim setup on each one and see how things develop.

That does sound like an interesting use of cancerous growth, and I can see how that would stay stable - you end up with a sort of grass effect, fields of veg grow, bots feeding from it gain only a little energy per veg, so must eat a lot of them.  I rather like that idea actually, seems a little more reminiscent of real veg and herbivores.

I'm not sure I follow your approach to creating an animal bot though - if you make all the bots veg, won't that promote veg behaviour? If a bot can get enough energy just by sitting around and (for want of a better word) vegitating, what evolutionary advantage does moving around and shooting give?

Took a peek at my sim just now, I noticed that the constant reproduction was causing bots to propel themselves along, creating a 1% bot each cycle which immediately died from lack of energy.  The poiffs of exploding bots make it look like a smoke trail for the one that's reproducing  :P
Title: Re: Randombot evolution sim
Post by: Numsgil on April 05, 2012, 04:29:19 PM
There are so many different ways to induce evolution in the bots... I think I'm going to have to start a charity where people donate their old computers to me so that I can use them for extra processing power.  Try a different sim setup on each one and see how things develop.

If you plan on leaving them on for a while, it's sometimes better to just buy a new stripped down computer with a core i7, in terms of the energy consumption.  Each DB instance is single threaded, but you can run multiple instances simultaneously.  So one of the new 6 core processors can run 12 instances (6 cores with hyperthreading = 12 hardware threads) pretty effectively.

Quote
I'm not sure I follow your approach to creating an animal bot though - if you make all the bots veg, won't that promote veg behaviour? If a bot can get enough energy just by sitting around and (for want of a better word) vegitating, what evolutionary advantage does moving around and shooting give?

If they don't get a lot of nrg from being a veggy, they should learn to feed as well, to supplement their meager nrg income.  Pretty soon after that all the non feeding vegs should get eaten.  Then you lower the veggy feeding some more, and introduce dumb bots to feed the animals by getting eaten.  You keep lowering the veg nrg until you can turn it off entirely.  Then start the sim with that species not marked as vegs, and you can introduce in smarter and smarter vegs.

Quote
Took a peek at my sim just now, I noticed that the constant reproduction was causing bots to propel themselves along, creating a 1% bot each cycle which immediately died from lack of energy.  The poiffs of exploding bots make it look like a smoke trail for the one that's reproducing  :P

Heh, that's a funny way to evolve locomotion. :)
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 10, 2012, 05:06:55 PM
If you plan on leaving them on for a while, it's sometimes better to just buy a new stripped down computer with a core i7, in terms of the energy consumption.  Each DB instance is single threaded, but you can run multiple instances simultaneously.  So one of the new 6 core processors can run 12 instances (6 cores with hyperthreading = 12 hardware threads) pretty effectively.

In an ideal world, this is precisely what I'd do.  Sadly at this stage in my life I'm an impoverished student, so it'll be a while before I can just fork out on a hobby number cruncher xD

Quote
If they don't get a lot of nrg from being a veggy, they should learn to feed as well, to supplement their meager nrg income.  Pretty soon after that all the non feeding vegs should get eaten.  Then you lower the veggy feeding some more, and introduce dumb bots to feed the animals by getting eaten.  You keep lowering the veg nrg until you can turn it off entirely.  Then start the sim with that species not marked as vegs, and you can introduce in smarter and smarter vegs.

Ok I get where you're coming from with that - how do you give them a meagre nrg income? I have my veg feeding at 1 nrg per kilobody point, and anything withat least a few hundred body seems to be doing fine - in fact most of them have 32000 nrg - that is until the age cost catches up with them and kills them off.

Quote
Heh, that's a funny way to evolve locomotion. :)

I don't think I'll credit them with having evolved this on purpose to get around, but I suppose there's the possibility that a bot might use this as a means of locomotion if movement was exceptionally costly and body wasn't an issue...

Incidentally, the latest update: so far there is no sign of sensible reproduction evolving, however I feel we are getting closer.  I have attached a few curiositied which have mutated along the way.  The first is a robot that compulsively ties to anything in front of it.  It doesn't do anythig further, but it's has a little cluster of other bots attached to it now, and it's at least a step in the right direction.
The second is a massive (32000 body) bot which constantly shoots (I'm not sure what it shoots either), but from the once-over I've given its DNA, I can't work out why it shoots constantly, nor why it's so big.
The final curiosity is another behemoth (32000 body) which again I haven't been able to ascertain the reason for its massive size.  Please feel free to pick apart the coding for each and discuss, I'd be interested to know what makes these guys tick.
I find the discovery of these behaviours heartening - for a start it shows that a wide variety of interesting behaviour is possible from these bots, and secondly, all I need is for one of them to start reproducing again, and I could have the makings of a rudimentary self-sufficient bot!
Title: Re: Randombot evolution sim
Post by: Botsareus on April 10, 2012, 05:40:15 PM
Quote
I'd be interested to know what makes these guys tick.
A guy by the name of Prsn828 was working  an a plugin that should make mutated DB easier to comprehend, unfortunately I have no idea what happened with this. http://forum.darwinbots.com/index.php/topic,3442.0.html (http://forum.darwinbots.com/index.php/topic,3442.0.html)

Huge robots are an evolutionary advantage because they put out the most energy pomp, unfortunately they never reproduce.

A robot does not need to shoot to gather energy, maybe it is tie feeding.
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 10, 2012, 06:01:45 PM
Sorry, I should have explained - these bots are far from adapting to their environment.  The behaviours seen here are merely due to random mutation - unless they develop some way of reproducing sensibly, this behaviour is null and void.

One thing that the growing huge does mean though is that it will greatly increase their longevity, which will at least give them more of a chance to evolve other behaviours including reproduction.  We'll see.

I just posted the bots out of curiosity as to how the behaviours they have developed work, none of them will be at all successful in their present condition.
Title: Re: Randombot evolution sim
Post by: Botsareus on April 10, 2012, 06:08:10 PM
 
Quote
I just posted the bots out of curiosity as to how the behaviours they have developed work

:D I kinda gave up trying when I evolved this; (There are 233 genes, it does not fit on the page)

Code: [Select]
'4111
 *.body 1786 *.myeye 1786 << 1 *.in5 *.readtie *.dnalen *.eye3 *.vel 50 store
 127 dec
 sgn sqr
''''''''''''''''''''''''  Gene:  1 Begins at position  18  '''''''''''''''''''''''
 cond
 clear ceil not
 rnd abs angle ~ stop
''''''''''''''''''''''''  Gene:  1 Ends at position  26  '''''''''''''''''''''''
 *153 - stop
 !%=
 *267 store

''''''''''''''''''''''''  Gene:  2 Begins at position  33  '''''''''''''''''''''''
 cond
 *-353 angle dist *489 div or
 and
 not
 dropbool
 *.ypos ceil inc
 << <=
 !=
 div dist -1128 *382 *.deltie 1 swapbool
 1 1 *.mkshell >=
 start
 ceil not
 sgn .refvelup inc
 *265 store
 *.tin6 add *665 store
 swapbool
 false
 << store
 inc

''''''''''''''''''''''''  Gene:  2 Ends at position  76  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  3 Begins at position  77  '''''''''''''''''''''''
 else
 -886 add sub xor
 !=
 -26 *-1152
''''''''''''''''''''''''  Gene:  3 Ends at position  84  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  4 Begins at position  85  '''''''''''''''''''''''
 start
 127 dec
 sgn sqr
''''''''''''''''''''''''  Gene:  4 Ends at position  89  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  5 Begins at position  90  '''''''''''''''''''''''
 cond
 clear ceil not
 rnd abs angle ~ stop
''''''''''''''''''''''''  Gene:  5 Ends at position  98  '''''''''''''''''''''''
 *153 - stop
 !%=
 *267 store

''''''''''''''''''''''''  Gene:  6 Begins at position  105  '''''''''''''''''''''''
 cond
 *-353 angle inc
 div -436 dupbool
 -- ceil clear
''''''''''''''''''''''''  Gene:  6 Ends at position  114  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  7 Begins at position  115  '''''''''''''''''''''''
 cond
 swapbool
 -336 & add | over >> and
 dist swapbool
 >
 xor
 else
 sub !%=
 691 << *.deltie 1 swapbool
 1 1 *.mkshell >=

''''''''''''''''''''''''  Gene:  7 Ends at position  139  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  8 Begins at position  140  '''''''''''''''''''''''
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  8 Ends at position  144  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  9 Begins at position  145  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  9 Ends at position  150  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  10 Begins at position  152  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 sgn .refvelup inc
 *265 store
 *.tin6 add *665 store
 swapbool
 false
 << store
 inc
 else
 -886 add sub xor
 !=
 -26 *-1152
''''''''''''''''''''''''  Gene:  10 Ends at position  180  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  11 Begins at position  181  '''''''''''''''''''''''
 start
 127 dec
 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  11 Ends at position  187  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  12 Begins at position  188  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1786 << 1 *.in5 *.readtie *.in9 705 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  12 Ends at position  203  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  13 Begins at position  204  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1786 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 ceil clear 1 *.mkshell >=
 start
 ceil not
 sgn .refvelup inc
 *265 store
 *.tin6 add *665 store
 swapbool
 false
 << store
 inc

''''''''''''''''''''''''  Gene:  13 Ends at position  238  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  14 Begins at position  239  '''''''''''''''''''''''
 else
 -886 add sub
''''''''''''''''''''''''  Gene:  14 Ends at position  242  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  15 Begins at position  243  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++ !=
 dropbool
 *.mkvirus floor floor !%=
 !%=
 691 ceil over *.hitup store
 and
 sgn else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  15 Ends at position  273  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  16 Begins at position  275  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  16 Ends at position  285  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  17 Begins at position  286  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1786 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor store
 -14 <
 abs *-108 xor
 pyth -186 ++ !=
 dropbool
 *.mkvirus floor floor !%=
 !%=
 691 ceil over *.hitup store
 and
 sgn else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  17 Ends at position  334  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  18 Begins at position  336  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  18 Ends at position  346  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  19 Begins at position  347  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1786 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 1 *.mkshell >=
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  19 Ends at position  380  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  20 Begins at position  381  '''''''''''''''''''''''
 else
 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 1 *.mkshell >=

''''''''''''''''''''''''  Gene:  20 Ends at position  404  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  21 Begins at position  405  '''''''''''''''''''''''
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  21 Ends at position  409  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  22 Begins at position  410  '''''''''''''''''''''''
 else
 << pow *.deltie 1 swapbool
 1 1 *.mkshell >=

''''''''''''''''''''''''  Gene:  22 Ends at position  419  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  23 Begins at position  420  '''''''''''''''''''''''
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  23 Ends at position  424  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  24 Begins at position  425  '''''''''''''''''''''''
 else
 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 1 *.mkshell >=

''''''''''''''''''''''''  Gene:  24 Ends at position  448  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  25 Begins at position  449  '''''''''''''''''''''''
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  25 Ends at position  453  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  26 Begins at position  454  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  26 Ends at position  459  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  27 Begins at position  461  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  27 Ends at position  471  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  28 Begins at position  472  '''''''''''''''''''''''
 cond
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  28 Ends at position  477  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  29 Begins at position  479  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  29 Ends at position  489  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  30 Begins at position  490  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1786 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 1 *.mkshell >=
 start
 ceil not
 sgn .refvelup inc
 *265 store
 *.tin6 add *665 store
 swapbool
 false
 << store
 inc

''''''''''''''''''''''''  Gene:  30 Ends at position  535  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  31 Begins at position  536  '''''''''''''''''''''''
 else
 -886 add sub xor
 !=
 -26 *-1152
''''''''''''''''''''''''  Gene:  31 Ends at position  543  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  32 Begins at position  544  '''''''''''''''''''''''
 start
 127 dec
 sgn sqr
''''''''''''''''''''''''  Gene:  32 Ends at position  548  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  33 Begins at position  549  '''''''''''''''''''''''
 cond
 clear ceil not
 rnd abs angle ~ stop
''''''''''''''''''''''''  Gene:  33 Ends at position  557  '''''''''''''''''''''''
 *153 - stop
 !%=
 *267 store

''''''''''''''''''''''''  Gene:  34 Begins at position  564  '''''''''''''''''''''''
 cond
 *-353 angle inc
 div -436 dupbool
 -- ceil clear .refvelup inc
 *265 store
 *.tin6 add *665 store
 swapbool
 false
 << store
 inc
 else
 -886 add sub xor
 !=
 -26 *-1152
''''''''''''''''''''''''  Gene:  34 Ends at position  594  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  35 Begins at position  595  '''''''''''''''''''''''
 start
 127 dec
 sgn sqr
''''''''''''''''''''''''  Gene:  35 Ends at position  599  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  36 Begins at position  600  '''''''''''''''''''''''
 cond
 clear ceil not
 rnd abs angle ~ stop
''''''''''''''''''''''''  Gene:  36 Ends at position  608  '''''''''''''''''''''''
 *153 - stop
 !%=
 *267 store

''''''''''''''''''''''''  Gene:  37 Begins at position  615  '''''''''''''''''''''''
 cond
 *-353 angle inc
 div -436 dupbool
 -- ceil clear
''''''''''''''''''''''''  Gene:  37 Ends at position  624  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  38 Begins at position  625  '''''''''''''''''''''''
 cond
 swapbool
 -336 & add | over >> and
 dist swapbool
 >
 xor
 else
 sub !%=
 691 ceil over *.hitup store
 and
 sgn
''''''''''''''''''''''''  Gene:  38 Ends at position  647  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  39 Begins at position  648  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  39 Ends at position  653  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  40 Begins at position  655  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  40 Ends at position  665  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  41 Begins at position  666  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1786 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 *.mkshell >=
 start
 ceil not
 sgn .refvelup inc
 *265 store
 *.tin6 add *665 store
 swapbool
 false
 << store
 inc

''''''''''''''''''''''''  Gene:  41 Ends at position  710  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  42 Begins at position  711  '''''''''''''''''''''''
 else
 -886 add sub xor
 !=
 -26 *-1152
''''''''''''''''''''''''  Gene:  42 Ends at position  718  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  43 Begins at position  719  '''''''''''''''''''''''
 start
 127 dec
 sgn sqr
''''''''''''''''''''''''  Gene:  43 Ends at position  723  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  44 Begins at position  724  '''''''''''''''''''''''
 cond
 clear ceil not
 rnd abs angle ~ stop
''''''''''''''''''''''''  Gene:  44 Ends at position  732  '''''''''''''''''''''''
 *153 - stop
 !%=
 *267 store

''''''''''''''''''''''''  Gene:  45 Begins at position  739  '''''''''''''''''''''''
 cond
 *-353 angle inc
 div -436 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 1 *.mkshell >=
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  45 Ends at position  771  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  46 Begins at position  772  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  46 Ends at position  777  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  47 Begins at position  779  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  47 Ends at position  789  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  48 Begins at position  790  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1 *.mkshell >=
 start
 ceil not
 sgn .refvelup inc
 *265 store
 *.tin6 add over >> and
 dist swapbool
 >
 xor

''''''''''''''''''''''''  Gene:  48 Ends at position  814  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  49 Begins at position  815  '''''''''''''''''''''''
 else
 sub !%=
 691 ceil over *.hitup store
 and
 sgn
''''''''''''''''''''''''  Gene:  49 Ends at position  824  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  50 Begins at position  825  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  50 Ends at position  830  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  51 Begins at position  832  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++ !=
 dropbool
 *.mkvirus floor floor !%=
 !%=
 691 ceil over *.hitup store
 and
 << store
 inc
 else
 -886 add sub xor
 !=
 -26 *-1152
''''''''''''''''''''''''  Gene:  51 Ends at position  866  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  52 Begins at position  867  '''''''''''''''''''''''
 start
 127 dec
 sgn sqr
''''''''''''''''''''''''  Gene:  52 Ends at position  871  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  53 Begins at position  872  '''''''''''''''''''''''
 cond
 clear ceil not
 rnd abs angle ~ stop
''''''''''''''''''''''''  Gene:  53 Ends at position  880  '''''''''''''''''''''''
 *153 - stop
 !%=
 *267 store

''''''''''''''''''''''''  Gene:  54 Begins at position  887  '''''''''''''''''''''''
 cond
 *-353 angle inc
 div -436 dupbool
 -- ceil clear
''''''''''''''''''''''''  Gene:  54 Ends at position  896  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  55 Begins at position  897  '''''''''''''''''''''''
 cond
 swapbool
 -336 & ceil over *.hitup store
 *.deltie 1 swapbool
 1 1 *.mkshell >=
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  55 Ends at position  916  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  56 Begins at position  917  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  56 Ends at position  922  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  57 Begins at position  924  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  57 Ends at position  934  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  58 Begins at position  935  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1 *.mkshell >=
 start
 ceil not
 sgn .refvelup inc
 *265 store
 *.tin6 add over >> and
 dist swapbool
 >
 xor

''''''''''''''''''''''''  Gene:  58 Ends at position  959  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  59 Begins at position  960  '''''''''''''''''''''''
 else
 sub !%=
 691 ceil over *.hitup store
 and
 sgn
''''''''''''''''''''''''  Gene:  59 Ends at position  969  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  60 Begins at position  970  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  60 Ends at position  975  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  61 Begins at position  977  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++ !=
 dropbool
 *.mkvirus floor floor !%=
 !%=
 691 ceil over *.hitup store
 and
 << store
 inc
 else
 -886 and
 sgn
''''''''''''''''''''''''  Gene:  61 Ends at position  1007  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  62 Begins at position  1008  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  62 Ends at position  1013  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  63 Begins at position  1015  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++ !=
 dropbool
 *.mkvirus floor floor !%=
 !%=
 691 ceil over *.hitup store
 and
 sgn else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  63 Ends at position  1045  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  64 Begins at position  1047  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++ sgn else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  64 Ends at position  1064  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  65 Begins at position  1066  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  65 Ends at position  1076  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  66 Begins at position  1077  '''''''''''''''''''''''
 cond
 * *.body 1786 ceil not
 sgn sgn else
 << 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 1 *.mkshell >=

''''''''''''''''''''''''  Gene:  66 Ends at position  1108  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  67 Begins at position  1109  '''''''''''''''''''''''
 start
 ceil not
 sgn sgn
''''''''''''''''''''''''  Gene:  67 Ends at position  1113  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  68 Begins at position  1114  '''''''''''''''''''''''
 else
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  68 Ends at position  1119  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  69 Begins at position  1121  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  69 Ends at position  1131  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  70 Begins at position  1132  '''''''''''''''''''''''
 cond
 %=
 dist << sub stop
''''''''''''''''''''''''  Gene:  70 Ends at position  1137  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  71 Begins at position  1139  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  71 Ends at position  1149  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  72 Begins at position  1150  '''''''''''''''''''''''
 cond
 * <<
''''''''''''''''''''''''  Gene:  72 Ends at position  1152  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  73 Begins at position  1153  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  73 Ends at position  1163  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  74 Begins at position  1164  '''''''''''''''''''''''
 cond
 * *.body 1786 *.myeye 1 *.mkshell >=
 start
 ceil not
 sgn .refvelup inc
 *265 store
 *265 store
 *.tin6 add *665 store
 swapbool
 false
 << store
 inc

''''''''''''''''''''''''  Gene:  74 Ends at position  1190  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  75 Begins at position  1191  '''''''''''''''''''''''
 else
 -886 add sub xor
 !=
 -26 *-1152
''''''''''''''''''''''''  Gene:  75 Ends at position  1198  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  76 Begins at position  1199  '''''''''''''''''''''''
 start
 127 dec
 sgn sqr
''''''''''''''''''''''''  Gene:  76 Ends at position  1203  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  77 Begins at position  1204  '''''''''''''''''''''''
 cond
 clear ceil not
 rnd abs angle ~ stop
''''''''''''''''''''''''  Gene:  77 Ends at position  1212  '''''''''''''''''''''''
 *153 - stop
 !%=
 *267 store

''''''''''''''''''''''''  Gene:  78 Begins at position  1219  '''''''''''''''''''''''
 cond
 *-353 angle inc
 div -436 1 *.in5 *.readtie *.in9 .refaimdx dec
 *.mass 237 div 2 << pow floor << pow *.deltie 1 swapbool
 1 1 *.mkshell >=
 start
 ceil not
 sgn sgn *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  78 Ends at position  1256  '''''''''''''''''''''''

''''''''''''''''''''''''  Gene:  79 Begins at position  1257  '''''''''''''''''''''''
 cond
 * *.body stop
''''''''''''''''''''''''  Gene:  79 Ends at position  1260  '''''''''''''''''''''''
 <<
''''''''''''''''''''''''  Gene:  80 Begins at position  1262  '''''''''''''''''''''''
 cond
 499 store
 -14 <
 abs *-108 xor
 pyth -186 ++
''''''''''''''''''''''''  Gene:  80 Ends at position  1272  '''''''''''''''''''''''
Title: Re: Randombot evolution sim
Post by: Numsgil on April 11, 2012, 01:26:36 AM
Ok I get where you're coming from with that - how do you give them a meagre nrg income? I have my veg feeding at 1 nrg per kilobody point, and anything withat least a few hundred body seems to be doing fine - in fact most of them have 32000 nrg - that is until the age cost catches up with them and kills them off.

That sounds about right.  If you have a reproducing strain, as soon as someone figures out how to fire you should see that sub strain take over.  Right now it's the quiet before the storm.

For the bots you posted:

This is a stripped version of the shooter bot (done by hand):
Code: [Select]
782 inc
 801 .out8 store
 905 inc
 485 .eye3width store
 523 191 store
 593 407 store
 .eye9dir inc
 86 inc
 275 912 store
 148 120 store
 373 * inc
 382 dec
 483 686 | dec
 550 dec
 .in8 dec
 661 dec
 859 1065 store
 770 279 store
 589 917 store
 354 56 store
 36 438 mult 187 store

Most of it is just random poking.  But the shooting is from this:

483 686 | dec

The bitwise or of 483 and 686 is 7, which is the .shoot sysvar.  dec means it's firing -1 shots.  So it's learned to feed constantly, basically.

I didn't look at the others.  The trick is just to find the inc, dec, and store commands, and then walk backwards through the program as many stack places as you need to to get the full command.  It's usually more effort than it's worth, though :)
Title: Re: Randombot evolution sim
Post by: Botsareus on April 11, 2012, 02:41:09 PM
(thx for fixing my post Numsgil)



Beanspoon, You can also check out the robot building tutorials on the wiki to help you figure things out...
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 15, 2012, 03:44:25 PM
Cheers for the advice guys.  Currently I'm ridiculously busy with my Masters dissertation, but once I've got my final year out of the way I'll have a lot more free time to play with this.

Speaking of your "calm before the storm" Nums, the massive shooter which I posted a while ago has survived all this time, has made the shoot gene dormant, re-started reproduction and its population has exploded.  More excitingly, I am seeing a lot of promising behaviour, including periodic (not cancerous as far as I can tell) reproduction, periodic (but unaimed) shooting, periodic and random bursts of movement, and for some reason some of them seem to have activated their .fixed memory location.  I will be keeping a close eye on things now to see what develops...
Title: Re: Randombot evolution sim
Post by: Beanspoon on May 06, 2012, 05:17:45 AM
A quick update:  The evosim will be down for a little while.  My project is now finished so I've had to relinquish my work computer which was running it.  It may be a little while before I can get my hands on another computer, but once I do I'll get it running again.
Title: Re: Randombot evolution sim
Post by: Beanspoon on October 30, 2012, 11:54:45 AM
Good day friends!  So I have acquired a new PC to run DB2 on!  Hooray!  Therefore, I will be starting up my evosim once again just as soon as I've remembered which file is which :/
Title: Re: Randombot evolution sim
Post by: Numsgil on October 31, 2012, 05:25:21 PM
Ha, sounds good. Can never have too much horsepower to throw at DB.
Title: Re: Randombot evolution sim
Post by: Beanspoon on November 05, 2012, 07:10:30 AM
Ha, sounds good. Can never have too much horsepower to throw at DB.

True that.  The computer I'm running now is a quad core, so I might get two instances on the go, one with algal-like veg and the other with cancerous veg.  I'll need the other two cores for calculation however, as it is really a work computer ;)

I tell you what, evolving a sensible reproduction pattern is not easy...I have continued the sim from where I left off, and after 10m cycles the bots are still reproducing uncontrollably and killing themselves off, or have switched off their reproduction gene and are just sitting there.  Patience is the key...
Title: Re: Randombot evolution sim
Post by: Beanspoon on November 21, 2012, 10:38:51 AM
Success!  It took about 40 million cycles, but I finally have a species which reproduces sensibly!  I was lucky enough to check it just as the first one reproduced.  I increased the energy so that it had a better chance of surviving, and am now slowly bringing it back down to the original level.  I have one question: while the mutation rate is set extremely low (1/32x), a large number of mutations happen almost every time it reproduces.  We're talking 5 or 6 different reproduction-related changes per offspring.  Is this a fault with the program?  I'm loath to start a new sim with just one because I don't know which one to choose (there are over 900 of them now, and almost all different) and that would defeat the purpose of natural selection.
Title: Re: Randombot evolution sim
Post by: Panda on November 21, 2012, 01:11:43 PM
The mutation rate at 1/32x is still quite high, really. Erm, the best way is to set the mutation rate for each type of bot to 10 times less, make the number wherever it is to a larger number. Can't remember exactly how to do that, though.
Title: Re: Randombot evolution sim
Post by: Beanspoon on November 22, 2012, 05:28:53 AM
Ah ok - I know how to do that for a new sim, but not while one is running...
Title: Re: Randombot evolution sim
Post by: Botsareus on November 23, 2012, 03:29:30 PM
I have an idea how you can give us your robots:

1.) Memorize your out folder for internet mode. (Just make sure your outbound folder points to a real directory you can write to)
2.) Almost skipped a step  :P  Make sure the inbound folder points to an empty directory
3.) Take a program such as notepad.exe and make a copy of it in the same folder as darwinbots calling it "DarwinbotsIM.exe"
4.) Run with IM on for 8K cycles or so (you do not need to make a new simulation)
5.) Go to your out folder and select all robots, zip em and send em to us.



I believe you can accomplish the same result by adding a teleporter, although I never used one.
Title: Re: Randombot evolution sim
Post by: Beanspoon on November 26, 2012, 06:02:23 AM
Good idea - I'll try that when I have a mo.  Are you sure you want all this data though?  Currently I have 500 vegs which appear to be thriving but are pretty much all different...
Title: Re: Randombot evolution sim
Post by: Botsareus on November 27, 2012, 06:59:59 PM
I don't need all of the data, maybe 20 robots or so... maybe by luck I'll get a couple that are doing well... in any case I want to see how they look like even if they are the crappier type
Title: Re: Randombot evolution sim
Post by: Beanspoon on November 28, 2012, 06:44:33 AM
Sure.  Would you like a copy of my settings file as well? They have evolved to survive under those conditions...
Title: Re: Randombot evolution sim
Post by: Botsareus on November 28, 2012, 03:02:49 PM
might as well, thx
Title: Re: Randombot evolution sim
Post by: Beanspoon on March 15, 2013, 02:44:29 PM
Hi- I know I haven't posted anything here in a while. The reason is that I realised that my mutation rates were set far too high, and there was no way I could go through all the bots and change their rates one by one. As such, I restarted the sim with rates of a 10th of that which I was using before.
The sim has been running for over three months with no development. Today however, bots with a sustainable reproduction cycle evolved. Once I have sorted through them, further slowing their mutation rates (there was still an alarming amount of mutation happening), I will post the sim here. My next goal is to slowly reduce the energy the bots receive for photosynthesis from a frankly cushy 8 per kBP down to 1.
Title: Re: Randombot evolution sim
Post by: SlyStalker on March 20, 2013, 03:23:07 AM
what mutation rate did you set the sim to?
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 03, 2013, 09:30:18 AM
what mutation rate did you set the sim to?

I have the mutation rate set at 1/32nd, but I also adjusted the individual mutation rates by multiplying the default values by 100.  Currently most of the species in my sim have a species diversity of about a half of their population.  Taking into account that their genetic data is ~1000 bp long and the bots tend to live a long time (there are no predators currently in my system), most of this diversity will be due to point mutation.

I think the veggie population has now adapted to the world parameters I wanted, so it's now time to introduce a predator of some sort.  What would the veterans of evosims suggest as the best way to create a predator by mutation?  Randombots sat next to veggies which spray out energy packets?  I'd like to keep the sim with all my currently evolved veggies going if possible, so I need to evolve the predators to the point that they can look after themselves and then I can drop them into the current sim.
Title: Re: Randombot evolution sim
Post by: Numsgil on April 03, 2013, 04:05:20 PM
You might get some results by having energy-spreading bots, yeah.  But you'll need to keep an eye on the bots and change the settings they face as they adapt, or the sim will start crawling.

Usually "predator" bots will evolve to just swim in a single direction firing constantly.  But that might be all you need.

Keeping the two populations from killing each other would be much harder.
Title: Re: Randombot evolution sim
Post by: Beanspoon on April 04, 2013, 06:59:29 AM
Well yeah my plan was to use the second sim long enough to get the predator bots eating and then move them over to the other sim.  Hopefully if they're not too well adapted they'll only be marginally successful and I can get a sustainable sim going. I'm hoping to have them end up in an evolutionary arms race...