This is incredibly interesting. Why wasn't this seen as fruitful over the last decade?
But there are certain applications where it’s the only good way of doing it (for example in games, where you don’t have access to a gradient over the space of how good a certain move is given the current game state, and it’s relatively quick and and efficient to simulate the evolution of the game).
NEAT: https://www.cs.ucf.edu/~kstanley/neat.html
HyperNEAT: http://eplex.cs.ucf.edu/hyperNEATpage/HyperNEAT.html
There are explanations, links to the research papers, and links to implementations.
Here is a working example that runs in your browser using Javascript: https://liquidcarrot.io/example.flappy-bird/