

Module Brief: Create a demo application applying machine learning to a game related task and identify how varying parameters impact ML algorithm performance.
The problem that I selected for this was to train an AI agent to be able to drive around a small race course evocative of a 2D top-down racing game. The agent was controlled using an neural network generated using the neuro-evolution technique NEAT and a series of tests were carried out, with both varying features provided to the neural net, as well as editing the parameters of the genetic algorithm.
The application functioned by generating a population of cars, that would would 'drive' until they either crashed, or completed a set number of laps. Once all of the agents are finished, the next generation will be created and begin the next set. This continues until a preset number of generations have run, or an agent has achieved a certain fitness, indicating that a suitable agent has been created. The best performing genome, in the first case the genome with the highest fitness across all generations and in the second the genome that reached the fitness threshold, is returned and saved for later up in testing.
A set of tests were carried out. that examined the features that were used as input for the neural net and how changing these affected the performance of the AI.