NeuroEvolution Of Augmenting Topologies

This is a project which implemented NeuroEvolution of Augmenting Topologies (NEAT) with the goal to learn how to play Super Mario. It is technically capable in learning how to play other games but has only been thoroughly tested with Super Mario.

Input to the neural network is accomplished by a grid that 'visualizes' the screen, each box in the grid corresponds to an input node. When an entity intersects with a box in the grid that entitys value is sent to the corresponding input node. If more than one entity intersects with a box, then all entities send their value and the resulting value is divided by the number of entities in that box. This gives the agent some rudimentary vision and hopefully making it better for more general use.