I like the idea of encouraging more advanced behavior in leagues, but I think that requiring a specific kind of complex behavior for eligibility in the league is not good. Your rejection criteria would have to be specific so that people don't waste time building borderline cases that you later decide don't fit. But once you have this set of rejection criteria, you are also shutting out a lot of possible behaviors that you would not have intended to.
Rather than this artificial complexity requirement, why not just put the league in an environment where these things are actually necessary for survival? Increasing the field size a bit would weed out many of the simplest strategies (eg: dashing forward at max velocity is a very effective food hunting strategy in the smallest field size). Ban any base level functions that lead to trivial strategies. Movement speed could stand to be lowered, as well as bang efficiency. There are many possible things you can do to create a situation where complexity flourishes without saying "only bots that do suchandsuch are eligible".
I agree... that's why I was sugesting something like this :
- No agressive use of ties. That means no tieing to enemies or alge, no tie attacks, no tie defences. If you use .sharenrg and such then you need to have a condition that makes sure you're tied to one of your own.
- No memmory shots of any kind.
- No use of venom.
- No viruses.
- No sexrepro. (Although the lack of mem shots should prevent raping anyway)
- Very large field, possibly without toroidal borders and with some shapes in there (Could be cool if we had some coustom maps, maybe with designated spawn points, both for bots and the initial veggies)
- Low veggy cap.
- Medium fluid resistance.
- F1 costs, possibly a litle more expensive, like set a 1.5-2 multiplier or something like that. And maybe cut the code execution costs completely.
A lot of those rules and settings help encourage more complex behavior and larger organisms.
Also for the NN league I think the blank network would be the most interesting, but it would also be hard for a lot of people to build them. So maybe it should just be a blank bot league... where your bot isn't allowed to have a behavior when it starts...
But I'm having a hard time working out how the rules for such a league would go, since you could just have a strong bot in one gene with a condition that could easily break and protect everything but that condition... I figure you could limit mutation protection, but that would just make it hard to create interesting networks (On the other hand it may also force the authors to allow more interesting changes in the networks). You could also require that no sysvars that cause an action are allowed to be written into by the "zerobot". This would probably put some more focus on making a bot that evolves well, rather than ways to activate strong genes withing few mutation cycles through complex conditions and such. And I know a NN can evolve to use the network realy well even in the sims I've run with no mutation protection, so if you can protect the structure of your network it should be able to evolve all sorts of interesting behaviors (Only problem is it can take a while).
Also if you wan't to try running NN bots without mutation protection you can either transfer weights manualy or you can just write them in a redundant way.
0 mult
is the same as
20 20 sub 20 add 20 sub 20 add 20 sub '... asf depending on how long you want them.
In this case you also don't need to limit yourself to point mutations... but you may want to cut back on the mutation rate if you're making a realy large network...
I've only tryed running with point mutations but I think all mutations should work with this (Maybe cut the ones that delete stuff).
If you wan't I can post the bot I used for the last NN sim I ran, and the sim if you wan't to see where it got. (Longest sim I've run, because it kept evolving new behaviors, but got a litle tired of it, it reached 2K in population and the sim was just so damn slow. And carnivores never managed to get strong enough to eat other bots and had some code preventing tie formation (Since I find that fungus bots slow down sims a lot) so in the end I was just watching them improve their soccer skills).
Also about the BP thing, when regulating the weights manualy it means they need to be transfered to the offspring... now if the bots don't break the birth ties that would leave a max of 170 weights allowed (Unless you make your own ties and prolonge the birth process, then you have 10 more per cycle)... so for instance you could have 10 inputs, 10 hidden neurons and 7 outputs... (Not sure of BP actualy requires a bias). But if the tie breaks before the 15 cycles are past then the remaining weights won't get transfered.
Well that's one issue... the other issue is that BP if executed swiftly will just punish the bot for doing anything since it costs energy... so I guess it needs to wait a while to see how we're doing, but how long should it wait ? I men sometimes theres no alge around, but the bot may still be doing the right things, so BP would probably have to wait quite a while before knowing if whatever it's doing now is any better than before... I'm also not sure BP will even find the right aproach to survive, it may go in strange directions depending on what the network rewards and punishes (But ofcourse this could be part of the chalenge for the bot author). But there will be some issues figuring out how to avoid punishing bots for reproducing without encouraging a cancerous bot too much. And this brings the last issue... that the fitness function for the BP algorithm may end up becoming too specific, in the end it's just trying to ecourage a behavior that we encourage.
Not saying it's impossible or anything, just saying I'm seing a lot of issues for the NN league using BP...