Genetic algorithm optimization of a simple feed-forward N.Network in Processing (Java) for playing the game "Flappy Bird"
EN: This project was made with the help of a close friend, he programmed the game "Flappy Bird" in Processing a long time ago. I have got his permission to take his code and implement mine over it.
The project has 3 main parts, the actual game, the N.Network frame, and the genetic algorithm optimization for the weights and bias of the network. The neural networks are created from scratch, no libraries are used, it is a simple feed-forward NN with customizable size and shape The optimization part works, although it could be far better. It initializes the matrices with random values and then they are randomly altered by a Gaussian distribution. The factor by which they are altered is inversely proportional to the generation.
PD: I am a spanish speaker so in the code many variables, functions etc... are named in my language, be aware of that :)
ES: Este proyecto se realizó con la ayuda de un amigo cercano, él programó el juego "Flappy Bird" en Processing hace mucho tiempo. Tengo su permiso para tomar su código e implementar el mío sobre él.
El proyecto tiene 3 partes principales, el juego real, el marco N.Network y la optimización del algoritmo genético para los pesos y sesgos de la red. Las redes neuronales se crean desde cero, no se utilizan bibliotecas, es un NN de avance simple con tamaño y forma personalizables La parte de optimización funciona, aunque podría ser mucho mejor. Inicializa las matrices con valores aleatorios y luego son alteradas aleatoriamente por una distribución gaussiana. El factor por el cual se alteran es inversamente proporcional a la generación.