I'm trying to apply the World Models architecture to the Sonic game (using the gym-retro library).
My problem concerns the evolutionnary algorithm part that I use as the controller (worldmodels = auto encoder + RNN + controller). I'm using a genetic algorithm called NEAT (I use the neat-python library). I am searching for someone who can help me with the neat-python implementation.
Here is the method that runs a generation :
best_genome = pop.run(popEvaluator.evaluate_genomes, 1)
Currently, all the individuals of the population are evaluated on the first level of Sonic The HedgeHog. The "run" method should return the best genome of the population based on their performance on this level. Then, I use this best genome to re-create the associated neural network in order to run it in the same level. I was expected to see the exact same run as the best individual, but this is not the case. Sometimes it does, sometimes not.
There are not a lot of examples with NEAT and I based my code on this one from the official documentation.
Here is my own implementation, if you want to check.
If anybody has already used NEAT, help would be welcome !