The NEAT (NeuroEvolution of Augmenting Topologies) algorithm reflects the process of natural selection where the fittest individuals are selected for reproduction in order to produce offspring of the next generation. NEAT alters both the weighting parameters and the structures of networks. It ultimately finds a balance between the fitness of the evolved solutions and their diversity. Each bird of a generation has it's very own neural network. The birds having the best fitness values are made to reproduce and a new genertion of birds (which can perform better than the previous generation) are produced.
To see it in action, run the flappy.py file.
If you wanna play the game yourself, run the singlePlayer.py file and enjoy this classic game!