Overall Structure and Organization
The code is well structured and organized using classes for different components of the evolutionary algorithm. This makes the code more readable and easy to understand. The plots for the fitness are a nice addition but the readme could be a bit more extensive.😊
EA Implementation
The EA algorithm has a standard structure with some good improvement like the check of saturation and the addiction of the already evaluated genomes dict to save computation.
The increase in mutation probability seems to me a bit steep:
if cnt % 25 == 0 and cnt > 0:
self.mutation_prob = self.mutation_prob * 1.25
Given the starting point of .35 and 1.25 multiplayer the probability surpasses 1 after just 5 updates, but this was maybe by design.
Final Comments
Overall the code and the results look good to me!😄
First of all, thanks for the comments.
Reaching in few steps the mutation rate equal to 1 was an attempt of finding a way to escape from local minima, even though it didn't work out.
Overall Structure and Organization The code is well structured and organized using classes for different components of the evolutionary algorithm. This makes the code more readable and easy to understand. The plots for the fitness are a nice addition but the readme could be a bit more extensive.😊
EA Implementation The EA algorithm has a standard structure with some good improvement like the check of saturation and the addiction of the already evaluated genomes dict to save computation.
The increase in mutation probability seems to me a bit steep:
Given the starting point of .35 and 1.25 multiplayer the probability surpasses 1 after just 5 updates, but this was maybe by design.
Final Comments Overall the code and the results look good to me!😄