Bots and Simulations > Evolution and Internet Sharing Sims

Mutation Sims

(1/14) > >>

shvarz:
Following Nums' advice I decided to share some of my experience in running evolution sims that actually get some positive results.  It does not imply that this is the only way to do it, just one of them.  Besides, the approach will be different depending on your starting bot, your goals and other stuff.

I wanted to evolve a bot that can live on variable-in-abundance food source in large, high-friction environment.

My veggie was Alga Grexa, which runs around and follows any bot that it meets.  As a result they tend to accumulate in groups of 2-5 and run in circles.  This also means that they will survive well in places with low number of predators, multiply and then spread through the field.

My starting bot was Dominator Invincibalis.  Simply because it already had two essential features that a bot needs to survive in environment I wanted to create: it waited until food came to it and it was very good at killing the food.  It also did some other things, but that was not important.

Important things to consider before you start (run sample sims to figure these out):

1. Sim size.  It should be fairly large, because you need a lot of bots for evolution and that means you need a lot of space.  But very large sims result in pretty large variation in your population (until bots are adapted).  I started with size 5.

2. Energy input.  This is very important!  It should be barely enough for bots to survive, but it should not be too low to result in random "dying out".  Run several sims until you get reliable "predator-prey cycles" - your predator population should go up and down in more or less evenly spaced cycles.  The lowest number of predators in these cycles should not get below 25-30, or you'll get "dying outs".  Cycling between 50 and 150 is good.  Try to set "repopulate veggies" value as low as possible, and not to reseed too many veggies (and not to give your veggies too much energy).  If your "predator-prey" cycles are following the "reseeding" cycles, then you are doing something wrong!

3. Mutation rates.  These will depend greatly on DNA size of your bot.  For bots with short genomes mutation rates should be higher, with long genomes - lower.  If you are not sure, always go for lower rate!  My starting bot, DI, had ~ 400 DNA commands and I set all mutation rates to 25000 and that worked fairly well.  Mutation rate of mutation rate..  I don't think this is important.  I had it disabled completely.

4. Friction.  I wanted to adapt bots to friction.  You may go for something else.  Advice here is: Be patient. Don't start with very harsh conditions right away.  I set my initial friction to .3, because from sample sims I could see that DI still survived at that friction.  Then later I adjusted the slider higher and higher but very slowly, by about .01 every 2 million cycles.  Simultaneously I raised the energy input, because moving in higher friction would require more energy.

OK, now you are ready to start the sim!  Start it and open "Population" and "Average mutation" graphs.  Turn off the visual output and let simulation run.  Keep an eye on the graphs.  You should see cycles in population and slow, very slow rise in "average mutation".

Interpreting "Average mutation" graph: It is not as easy as it may seem.  Your average mutations will always go up over long periods of time.  It does not indicate that your bots are actually adapting, it may simply mean accumulation of neutral mutations.  One good way to distinguish "neutral" from "good" mutations is to look at the graph: "neutral" mutations will result in "Average" going up and down erratically, while "good" mutation results in slow but steady increase.  

Tracking the adaptations: Every now and then (1-2 million cycles) stop the sim and make a snapshot of your population (or just pick a random bot).  Choose the DNA that is the most frequent and compare it to the parent (I do that in Excel).  Highlight somehow the places where changes have occured.  Save.  Repeat.  After some time you'll see that some mutations persist - these are likely to be "good" mutations.  Don't start a new sim with only the new mutant bots!  Your best chance to get adaptations is to keep the whole population!  Just let the program run for as long as your patience allows you (and then a bit longer).  You can always go back to your saved sequences if you have to.  If your program crashed, or you had to reboot then it is fair game to take the latest mutant and start new simulation only with it.  BUT BEFORE YOU DO THAT:

Make sure your evolution is going the way you want: Before you start a new sim, take you parental bot (the one you started with) and put it in competition with your latest mutant.  If your mutant wins (or at least stays even) then all is well, keep mutating.  If your mutant bot is losing, then something is wrong, and you need to start over. :(  The easiest way to remedy that is to reduce you mutation rates even further.

Well, that is about all.  Ask me question if you have them!

PurpleYouko:
Could you please post "Alga Grexa" to the beastiary. A lot of members may not have it.
Put it in the "Veggies" sub forum and if you like also post it to the "Interesting behaviour bots" sub forum

Light:
I allways thought mutating highly tuned bots would result in them getting weaker, what sort of results did you get mutating Dom inv?

Shen:
Agreed Light. I always mutate simple bots and change the enviroment to see how it affects them.

Also shvarz do you actually have a working database and snapshot feature? I can never get it working. 'File Error 52' :(

shvarz:
Well, "highly tuned" is a relative thing.  What is good in one environment will suck in another environment.  Dom.Inv. was not perfect in sim with a high friction, so there was room for improvement.  And it improved.  In addition, it had several genes that were designed for F1 conditions - to fight attacking bots.  These genes became useless in my sim (there was no one to fight), so they served as "junk DNA", something that bot can mutate and maybe make use of.

Snapshot feature does not work right now.  I just use "find best bot" feature, take their DNA.  This is not a big problem when mutation rate is low.

One interesting thing I noticed that DomInv never turned cannibalistic (a huge problem with evosims, as we all know).  I have some ideas why that might be, but I'll try to test them first, then post them.  I think it has something to do with environment, not with bot.

Navigation

[0] Message Index

[#] Next page

Go to full version