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

Enhance ChangeCenterOfMassFitnessTest #792

Closed schrum2 closed 2 years ago

schrum2 commented 2 years ago

We want to make sure that ChangeCenterOfMassFitness will really assign appropriate scores that encourage flying machines. We already have a flying machine spawning in the test that we verify gets a fitness higher than 6.0.

Next step: increase the wait time so much that the flying machine completely leaves the area being monitored (you will need to clear it and put the flying machine back in). When the center of mass is measured the second time, there will be only air blocks. This is a special case ... as long as there were blocks at first, the fact that none are left after the wait period must mean the flying machine has succeeded! This case should be awarded with the max fitness, and we should have a test that checks this.

richeyme commented 2 years ago

Seems like it is actually awarded the flying machine with a max fitness score when the wait time was increased. Not sure if this needs more testing.

richeyme commented 2 years ago

With the tests that we currently have, updates for the waiting time seem to work a lot faster. In the cases of both stagnant and moving structures, the wait time will be cut short if there has been no movement or if the area being read is empty.

richeyme commented 2 years ago

One more test was made to ensure that oscillation was working (from issue #796). I believe that the tests are more complete now and do what they are supposed to (at least at 50L).

schrum2 commented 2 years ago

@richeyme Besides just running the unit tests, launch some actual experiments using MAP Elites with each combination of various settings to make sure that things work.