Perspective — I recognize the usefulness of genetic algorithms and neural networks, but I am also a severe critic against them. To put things simply, you need to hard-code the criteria that will let these algorithms decide whether their mutations were successful or not. This makes no sense at all, AI-wise.
I was seeking a method, a few years back, to let a program experiment with its own mutations so as to let it decide on its own — including what its own criteria should be. I never went on to coding this, but the general idea I had was the following: The algorithm should somehow temporarily store information on its past states, in a way that lets it compare now and then by interacting with its environment, and decide to go forward or roll back as necessary.
This would be consistent with biologists’ observations that populations sometimes sprout a new gene in as little as two generations, which is more consistent with Jean-Baptiste Lamarck‘s theories than with Charles Darwin‘s. Note, as an aside, that history kept the idea the two scientists were competing; whereas both were fighting for the same idea — the human species evolves — and didn’t necessarily think bad of each other’s ideas. That to say that time will reveal one day that the two theories are no more incompatible than top-down and bottom-up reasoning: They interact and feed one another.
As for the reason I am mentioning all this from seemingly nowhere, New Scientist is running an article with an interesting insight on how to program smart mutations.