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

Save hypervolumes and Pareto fronts with NSGA2 #942

Closed schrum2 closed 1 year ago

schrum2 commented 1 year ago

Seems like an obvious thing to do. I think the scores needed to construct the Pareto fronts are already logged, but there is no plotting mechanism. However, in the past, hypervolume was calculated afterward and not logged during evolution, so add this.

Note that this also applies to single-objective weighted sum runs using Pure Fitness (which is secretly also NSGA2)

schrum2 commented 1 year ago

Added plotting for the score files. Technically, these files may not contain Pareto fronts, and may not be sorted, but the plot files are useful anyway.

Still need hypervolume

schrum2 commented 1 year ago

NSGA2 should plot hypervolumes now, but this needs testing

schrum2 commented 1 year ago

Tested but there is no plt file. That is an easy fix. However, the txt file output only has hypervolumes of 0. However, I think that this is caused by issue #944 and is not incorrect behavior ... but rather another issue that should be fixed. Will need to solve both issues to properly examine.

schrum2 commented 1 year ago

Just set FitnessLog.PLOT_PARETO_FRONT_EVERY_GENERATION = false so that a plot file for every single generation will not be printed out. Seems like too much file I/O, and the raw data is already there ... I can easily plot the data with my own plot file if I really want it.

Hypervolume plotting works though.