Ok, so I was working on that Neural Net challenge a while ago, and experimented with building them in a redundant way that was more mutation friendly.
And guess what, it worked, pretty well even.
And was planning on expanding the code with a larger blank network, but had tech issues with integrating the mutated code in the other network.
And then I finaly managed to focus on that thesis. So never got much further with the evo sim at that point. I also played around with other mutations settups for the bots I extracted from the first sim.
Anyway, I'm using my computer for stuff lately so I'm no longer running the sim, might start it again at some point if I have an extra computer I can put somewhere I can't hear it.
So figured I should post what I got so far in case someone wants to run it or study the results.
Now obviously most of the functional mutations have arised by changing weight in the network, but the point is to create an evo base that isn't "hand made".
The mutated network is close to how I would immagine a very redundant mutated bot would start to evolve further by creating these structures as part of it's code.
Now I only used point mutations while running the sim, but it should be possible to enable all mutations, problem is it doesn't work mid sim, so I've been drawing out the best bots after a period with no mutations, this way they can all be entered again with new mutation settings.
Just remember that it's a big bot and it's evolved in a large environment (size 13) with very litle food (no more than 25 vegs max), so mutations rates need to be very low... I've included a good setting file to work from if you want to start your own sim with these.
Costs are close to F1 with no code execution costs and low movement cost.
To start a new sim with this bot you need to fidle around with a few things, wich is also why I included a sim with only one of the bots so you can see the evolved bot in action without having to fidle with all this or load the last sim before I locked mutations.
So to limit spam I'll try to break it down :
Files :
This was all done with DB 2.43.1k, but I think it should work in newer versions aswell.
I was planning on describing all the files in detail, but it's been months since I last looked at this, so I can't remember which is what. So I'll describe what I can.
- starterNN.sim
This is a sim where I inserted one of the good bots that I extracted from the original sim, so you don't need to load a sim with 2000 bots to view the behavior.
- NNNewBase
These are the original sim files, the last one I had as a rar file was _28_76.rar, so I suspect it's one of the last sims before I locked mutations to extract the best bots.
The others are later saves and I'm not sure what I was doing to those.
- Extracted bots.
These where all the subspecies extracted from the sim after having locked mutations for a day or 2. Some of them seem to cover most of the field with some holes here and there and others seem to focus on filling out those blanks.
There where some edge scrapers for a while, but not sure if there where any left in the end. (It was a big advantage at one point because the soccer bots used to loose track of their alge around borders)
- AllInOne is just all the files in one rar, so you don't need to download them individualy. The individual files are for people who for some reason still use a modem.
Settings :
It's basicaly F1 settings with some reduced movement cost, and I think I also cut code execution costs.
Field should be size 13, they still work in other field size, but with size 13 they spread out very nicely all over the place.
Toroidal borders is a must, they are not ment for a sim with borders and I'm pretty sure it's too late to try and change that.
And thin liquids is also required, also rather important I would say, since their controlls are all evlved in that environment anything else would probably be rather confusing to them.
25 or less alge, you don't want more than that unless you're increasing costs to make up for it... I actualy recommend around 10 with the costs in the included sims.
Currently the sim only has point mutations, and only VERY few of them. You could use all mutation types in theory, just make sure they're VERY rare... it's a big sim, so mutating often will let bots mutate 100's of times before encountering an alge, meaning they'll devolve alge controll for sure (Maybe if you're very lucky a strong cannibot would evolve, but I seriously doubt it).
The code is very long so it will mutate often, and the structure means a lot of mutations will be functional, so if you want more mutations... I guess maybe a lot of non functional junk code might help.
Instructions (On starting your own sim):
You should use settings that are close to the ones from the included sim, then you can always change them gradualy into whatever it is you like. But drastic changes could end up killing off everything.
Also the size and energy of a bot affect it's controlls... it may seem silly but this is how they work and it actualy makes sence once you study their behavior and environment, size and nrg reserves affecting behavior is a good thing in the long run.
But this means that the default (and non changeable) body size a bot starts with will have a very negative effect on it's navigation. So you need to select the bot and force it to reproduce twice before it reaches a manageable size.
This is a litle tricky to accomplish, wich is why there's also an almost empty sim with some bots set up with the right size and right next to an alge. It will still take a while before the bots stabilize around their natural way of being, but they'll get there and start to play soccer with the alge eventualy.
You'll see them try to play soccer form the beginning, but it'll take a while before the alge and bots all have the size and nrg their used to and start to realy demonstrate fancy ball controll.
The included sim (starterNN.sim):
Now this sim holds one of the subspecies from the end of the 4-500 hour evo sim.
It's one that was successfull over the largest part of the field. t was at around 2000 bots when I locked mutations to extract the best bots, so the sim won't behave exactly as before while the population is this low.
Also mutations are enabled, so if you wan't to make sure you're seing the original bot start off by locking mutations. (The mutations aren't too frequent though, so it shouldn't hurt to have them enabled)
Since there's very few bots in the sim the veggies tend to get bigger than they normaly would in the old sim, so they're not at the optimal size for the bots to "play soccer" with them.
The bots will still controll the alge and avoid killing it, but the alge will be too big to move around much, and in the end the bot will be too big to controll the alge well from all the energy it gains.
So if you're not seing much action just look around for a small bot controlling a small/medium size alge. Sooner or later things will start to fit better as the sim gets going and you'll start to see bots figting over alge and a lot more "dribling".
(I tryed to record some of this stuff, but the resolution made it realy hard to see what was going on)
Theres also only 10 veggies in the sim to reduce population a litle. I also encourage playing around with costs and such, increase movement costs, slowly get to F1 default costs maybe, but take baby steps, slight changes in costs can have dramatic effects, they need time to evolve to adapt to changes, do it litle by litle.
(I forgot wich bot I used for this sim, but that should be easy to see if you just start the sim and look at the settings)
So what does it do ? What evolved so far ?
It was started off as a blank network with only a few hand set weights.
It could eat alge and reproduce basicaly, but not very well.
And after about 2000 mutations :
- Anti canni conspec: It had evolved a conspec based on movement, when 2 bots see eachother they shoot, but try to get around eachother and move on. This makes it very hard for canibots or even just carnivores to evolve, since if you attack they will fight back or use mass reproduction to escape.
- Repro defence: Using reproduction as a defence in 2 different ways. It seems to get triggered by massive damage or loosing track of an alge. If you're loosing a fight scramble and hope for the best, if you had an alge and a bot made you loose sight of it, then spread and hope to steal it back while the other bot is focused on the many offspring.
- Alge controll: Very good alge controll, and without using ties (because I did everything I could to prevent any ties form evolving, just slows down the sim too much). It basicaly plays soccer with the alge and never kills it, a bot with an alge will make a big offspring if it gets too big, to avoid risking to kill the alge as your shots grow too powerfull. But it's realy the core of the bots behavior, in a size 13 field with 25 alge you need to stick to your food source if you find one, so this is the behavior that has been refined the most from what I can see. It has very good "ball controll" by now, and some bots are also getting good at stealing the ball as a result. It looks like it's having problems killing the alge, but it's realy just trying to keep the alge to itself while avoiding to kill it comlpetely.
- Shell: It uses shell, usualy triggered by pain I think, building a certain amount, around 500... no poison, venom or any of that though...
- Non wastefull: It's not wastefull, only shoots when it sees something. It misses the alge a lot, but if it didn't it would kill it. (There has been bots that fired less shots when manipulating the alge, but they never had a breakthrough)
- Exploring: The bots are getting pretty good at covering the field while moving in patterns where they won't run into eachother too often. There are some subspecies who cover certain areas, if you start a sim with only one bot type you will notice "holes" once the field is covered. So it seems some subspecies are more dominant in different regions. There was also some "edge scrapers" for a while because the bots had a tendency to loose their alge around the borders.
- Redundancy: And ofcourse lots of redundant code, probably because I had mutations set too high, so breaking some large code sections helped it lower the amount of functional mutations.
And yes a lot of the behaviors have arised because of the NN structure, but the NN has also changed in structure and has even added hidden nodes and such. So it's not just adjusting weights in a NN it is evolving to use the network in different ways. At one point it also developped a "handicap" where one of it's movement sysvars was always 8 (This had been done outside the NN structure). This was an advantage as it stabilized the bots movement, and at a later time the handicap actualy disapeared again. Personaly I found this very interesting, not sure exactly what to make of it, but interesting non the less.
IMPORTANT :
I almost forgot the alge, none of the sims will work without this
It's just the alge I was usin, all it does is increase body size at times, but it's the alge the bots are used to and it's needed for the sims, so you probably won't get far without it.
It's called Alga_Silo.txt
It's is NOT included in the AllInOne.rar