schrum2 / MM-NEAT

Modular Multiobjective (Hyper) Neuro-Evolution of Augmenting Topologies + MAP-Elites: Java code for evolving intelligent agents in Ms. Pac-Man, Tetris, and more, as well as code for Procedural Content Generation in Mario, Zelda, Minecraft, and more!
http://people.southwestern.edu/~schrum2/re/mm-neat.php
Other
50 stars 20 forks source link

Speed up objective based evolution in Minecraft #900

Closed schrum2 closed 1 year ago

schrum2 commented 1 year ago

Even though the evolution code is multithreaded, for some reason the fitness-based evolution code using NSGA-II is slower than MAP Elites. This was a problem with the GECCO experiments too, but mattered less then. However, if we are going to lean into NSGA-II as a more viable method of evolving things, then we need it to run faster if possible.

schrum2 commented 1 year ago

It might be sufficient to simply use the MinecraftLonerShapeTask instead of the MinecraftShapeTask, but this will require verification

schrum2 commented 1 year ago

Made Mu+Lambda remember parent scores and skip re-evaluation.

schrum2 commented 1 year ago

Although I have not done proper benchmarking, I believe this is faster now. Will close this issue, but I'm sure we'll notice if there is still significant slowdown. Have switched over all batch files that are fitness based to using the loner task and remembering parent scores.

schrum2 commented 1 year ago

Although switching to the loner task seems to have sped things up, the code reports that 0 previous scores are being remembered when the remember option is used. This needs to be fixed. Also, the number of scores remembered along the way should be plotted with a log.

schrum2 commented 1 year ago

It always remembers the maximum number of scores, so there isn't any point to the logging, but the remembering of scores works, so I'm closing the issue.