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

Hypervolume with negative scores #929

Closed schrum2 closed 1 year ago

schrum2 commented 1 year ago

When hypervolume is naively calculated in a domain that can have negative fitness scores, it creates problems. The resulting score does not mean what it should. For example, if you have a 2-objective problem with a score of 5 on a scale of 0 to 10 and a score of -7 on a scale of -10 to 0, then the amount of volume that this score dominates is 5*3 (because 5-0 = 5 and -7 - (-10) = 3). All that is happening here is that the minimum score is being subtracted from all objective scores before hypervolume is calculated.

Modify the methods in MultiobjectiveUtil so that each has a parameter indicating the minimum score in each objective. This can be a double[]. You should be able to retrieve this information with MMNEAT.task.minScores()

schrum2 commented 1 year ago

Solved. The MinecraftLonerShapeTask was not passing on the minScores from the MinecraftShapeTask, but now it is