This is an implementation of genetic algorithms combined with neural networks also known as neuroevolution
The algorithm doesnt perform amazing and i think thats due to the fact that i always spawn snakes on random environments so they are never memorizing. Further proof of this is there are snakes in training phase that get to the 20 food levels but i think randomness of the environment is more realistic.
TO-DO
-Tune hyperparameters to get the best result
-Document the remaining files
-Fix roulette wheel selection function
-Fix crossover_midpoint
-Clean up game.py
