neuroevolution-ai / NeuroEvolution-CTRNN_new

MIT License
3 stars 3 forks source link

feature validation runs #70

Closed bjuergens closed 3 years ago

bjuergens commented 3 years ago

implements #39 (validation runs)

Note: the current implementation does not use the result of validation-runs to select members of the HOF. That would be a separate issue. For now I want this merged as quickly as possible, so I can start comparing experiments. For updating the HOF, additional effort is needed, because the halloffame.update method takes the entire population and then does it's thing, based on the fitness of the entire population. At first glance I guess we need to reimplement that method to have it use the fitness from the validation run instead of the "old" fitness.

bjuergens commented 3 years ago

here is the first result of an experiment that uses validation runs (orange curve)

image

As expected the validation-curve is between the average of the population and the best individual.

you can find this specific experiment here: https://github.com/neuroevolution-ai/CTRNN_Simulation_Results/tree/master/data/2021-02-08_18-09-36

bjuergens commented 3 years ago

can be reviewed and merged @pdeubel

bjuergens commented 3 years ago

in this example the validation_fitness is less than the average of the generation

image

I think this is strange. It could mean an implementation error (even though I don't know what kind of error would create such results). Or it could mean, that the "best" individuum consistently was using a strategy, that doesn't generalize worse than the average, while being extremely lucky some rare situation.

the experiment can be found here: https://github.com/neuroevolution-ai/CTRNN_Simulation_Results/tree/master/data/2021-02-08_22-53-09

bjuergens commented 3 years ago

i have a possible reason why in some cases the curve for the validation runs is below the average curve, and in some cases it's above: The validation in these examples takes place on a fixed set of 10 seeds. If some of them are especially easy, then the curve is bound to be higher. If the seeds are especially hard, then the curve has to be lower than.

A simple solution: increase the number of validation runs further.