You're probably right, a neural net in nature consist of many cells working together and it's not how single cells work.
But a multicellular network would not work in DB, since it's probably something that evolved from the sensory network in larger organisms, from having simple reactions to pain receptors to forming more complex reactions from more inputs and finaly to actual thoughts. (I know a brain is more than just a neural network, but octopuses have no brain and still seem capable of more "complex" thoughts.)
I can also understand that a high amount of redundant code and the cooperation of several genes will limit the damage caused by mutations.
I did try to split up the network into a lot of genes, but that just destroyed the network more often.
The problem is that for every weight I have and input an add and a mult and an output... and only value mutations have a slight chance of doing something usefull with the network, where the operator mutations have a high chance of breaking the structure.
So it only has a 1 in 5 chance of having a very small chance of getting a usefull mutation, and it would take several usefull mutations to actualy get anywhere.
Locking mutations would limit the network to just 20 weights... this means I would face the choice of severely limiting the size of the network, or eliminating certain connections that seem to have no effect, or have a trained network and pick certain weights with a larger impact and change only the key weights.
I could also set a lower cap for the weights allowing me to use the binary opperators to store 2 different weights in one location. (But with a faily low cap on weights)
Or I could keep a small offset along with a weight modifying value in one location, making it possible to change any weight in the network, but still limited to changing only 20 different weights (Only advantage would be the network could prioritize and sacrifice certain weight changes for others).
Last idea is probably the one I like best, but still not realy as flexible as I had hoped.
The best I can think of is building the weight from many genes, 20 genes adding 5 and 20 genes withdrawing 5 for instance.
This way the odds of changing the weight would be a lot better.
The downside is that I have a LOT of weights, so multiplying that amount by 40 would make the bot very long... very very long...
And the point was to get faster evo results, so I'd rather not slow down the sim too much...
And you're also right that locking operator mutations wouldn't prevent the network from breaking down, however the mutations caused to the structure even when harmfull would still have a small chance of doing something usefull and not completely destroy the structure.
Also the absence of inc and dec would reduce the odds of shell starting to form from a mutated store rather than something in the network, creating the posibility for the shell amount to be regulated later on.
But breaking down weights into several genes would probably be more efficient than locking operator mutations, although in the long run it might get harder for the weights to adjust as the genes have been broken down...
I think the best setup for my purpose (And I realize it's doesn't quite fit cingle cell evolution) would be to do both, break down each weight into 4 or more values to increase the odds of weights changing vs the chance of the mem locations changing, and... locking mutations of operators
Even broken nodes can still be usefull since they are still modified by some weights before reaching an ouput.
I know it's not the right wayto do it, it's kind of cheating at evolution... but then Darwin will just have to sue me, I want the feature !
(If it's not too much trouble)
I'm also going to try to tweek league bots with it but it's hard to improve league bots this way since you need a steady flow of enemies to join the sim.
Best way I've found so far is adding another league bot as an alge and have a very high veggie cap and no energy gain, and give alga minimalis some more starting energy. The problem is that this will only allow the bot to evolve against weaker bots... but it might still be enough to tweek certain values.
Also the whole redundant code thing you described isn't far from what a NN is doing, random values and inputs getting scrabled together to create some sort of output... I'm just trying to nurture the structure
Maybe I'm overprotective, but I'm very impatient and I want good evo results NOW !