Bots and Simulations > Evolution and Internet Sharing Sims

Randombot evolution sim

<< < (3/8) > >>

Beanspoon:
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...

ikke:
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.

Numsgil:
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.).

Beanspoon:
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

Numsgil:

--- Quote from: 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.

--- End quote ---

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?

--- End 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.


--- 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

--- End quote ---

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

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version