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

Change Center of Mass a bit too harsh #940

Closed schrum2 closed 1 year ago

schrum2 commented 1 year ago

It looks like we have some cases where we have a large shape where part of it flies away, but so many blocks are left behind that the center of mass does not change enough to register as a flying machine. They are not getting the flying machine fitness.

@TjRaffert is going to upload some example shapes that were scored in this way.

TjRaffert commented 1 year ago

[REDSTONE_BLOCK at (3,2,4) oriented WEST, REDSTONE_BLOCK at (2,1,3) oriented WEST, REDSTONE_BLOCK at (2,1,2) oriented EAST, REDSTONE_BLOCK at (2,1,1) oriented NORTH, PISTON at (2,1,0) oriented EAST, REDSTONE_BLOCK at (4,3,4) oriented NORTH, STICKY_PISTON at (3,2,3) oriented DOWN, REDSTONE_BLOCK at (3,2,2) oriented EAST, REDSTONE_BLOCK at (3,2,1) oriented WEST, SLIME at (3,2,0) oriented EAST, STICKY_PISTON at (4,3,3) oriented WEST, PISTON at (4,3,2) oriented UP, REDSTONE_BLOCK at (4,3,1) oriented EAST, STICKY_PISTON at (0,2,2) oriented UP, PISTON at (0,2,1) oriented UP, STICKY_PISTON at (0,2,4) oriented DOWN, OBSERVER at (4,0,4) oriented DOWN, SLIME at (4,0,3) oriented UP, STICKY_PISTON at (4,0,2) oriented SOUTH, QUARTZ_BLOCK at (4,0,1) oriented WEST, PISTON at (4,0,0) oriented UP, PISTON at (1,0,4) oriented WEST, QUARTZ_BLOCK at (2,1,4) oriented WEST, REDSTONE_BLOCK at (1,0,3) oriented DOWN, QUARTZ_BLOCK at (1,0,2) oriented SOUTH, PISTON at (1,0,1) oriented EAST, STICKY_PISTON at (1,0,0) oriented WEST, SLIME at (3,3,4) oriented SOUTH, SLIME at (3,3,3) oriented SOUTH, STICKY_PISTON at (3,3,2) oriented SOUTH, SLIME at (3,3,1) oriented DOWN, SLIME at (4,4,4) oriented WEST, SLIME at (4,4,3) oriented NORTH, REDSTONE_BLOCK at (4,4,2) oriented DOWN, PISTON at (4,4,1) oriented NORTH, SLIME at (0,3,3) oriented UP, SLIME at (0,3,2) oriented UP, SLIME at (0,3,1) oriented UP, QUARTZ_BLOCK at (0,3,0) oriented NORTH, STICKY_PISTON at (0,3,4) oriented NORTH, QUARTZ_BLOCK at (1,4,3) oriented WEST, SLIME at (1,4,2) oriented SOUTH, QUARTZ_BLOCK at (1,4,1) oriented NORTH, STICKY_PISTON at (1,4,0) oriented UP, STICKY_PISTON at (1,4,4) oriented WEST, STICKY_PISTON at (4,1,1) oriented SOUTH, SLIME at (4,1,0) oriented DOWN, REDSTONE_BLOCK at (0,0,0) oriented UP, REDSTONE_BLOCK at (0,0,2) oriented EAST, REDSTONE_BLOCK at (0,0,1) oriented SOUTH, QUARTZ_BLOCK at (1,1,4) oriented UP, STICKY_PISTON at (1,1,3) oriented WEST, REDSTONE_BLOCK at (1,1,2) oriented EAST, OBSERVER at (1,1,1) oriented NORTH, SLIME at (2,2,0) oriented SOUTH, OBSERVER at (2,2,3) oriented UP, PISTON at (2,2,2) oriented EAST, STICKY_PISTON at (2,2,1) oriented NORTH, REDSTONE_BLOCK at (0,4,4) oriented DOWN, REDSTONE_BLOCK at (0,4,3) oriented NORTH, STICKY_PISTON at (0,4,2) oriented DOWN, REDSTONE_BLOCK at (0,4,1) oriented DOWN, PISTON at (3,0,4) oriented EAST, STICKY_PISTON at (3,0,3) oriented EAST, SLIME at (3,0,2) oriented WEST, SLIME at (0,4,0) oriented WEST, REDSTONE_BLOCK at (4,1,4) oriented EAST, STICKY_PISTON at (4,1,3) oriented EAST, PISTON at (3,0,1) oriented SOUTH, STICKY_PISTON at (0,1,4) oriented WEST, QUARTZ_BLOCK at (0,1,2) oriented WEST, PISTON at (1,2,1) oriented SOUTH, REDSTONE_BLOCK at (1,2,0) oriented WEST, STICKY_PISTON at (1,2,4) oriented EAST, PISTON at (1,2,3) oriented NORTH, QUARTZ_BLOCK at (2,3,1) oriented SOUTH, OBSERVER at (2,3,4) oriented UP, REDSTONE_BLOCK at (2,3,3) oriented NORTH, STICKY_PISTON at (3,4,1) oriented NORTH, QUARTZ_BLOCK at (3,4,0) oriented UP, OBSERVER at (3,4,4) oriented DOWN, REDSTONE_BLOCK at (3,4,3) oriented DOWN, STICKY_PISTON at (3,4,2) oriented UP, OBSERVER at (2,0,4) oriented UP, OBSERVER at (2,0,3) oriented EAST, STICKY_PISTON at (3,1,4) oriented UP, OBSERVER at (2,0,2) oriented UP, SLIME at (2,0,1) oriented UP, PISTON at (2,0,0) oriented WEST, STICKY_PISTON at (4,2,4) oriented SOUTH, SLIME at (4,2,3) oriented EAST, PISTON at (3,1,2) oriented DOWN, OBSERVER at (3,1,0) oriented SOUTH, SLIME at (4,2,2) oriented NORTH, OBSERVER at (4,2,1) oriented EAST, SLIME at (4,2,0) oriented DOWN, OBSERVER at (1,3,2) oriented EAST, STICKY_PISTON at (1,3,1) oriented WEST, REDSTONE_BLOCK at (1,3,0) oriented EAST, PISTON at (1,3,3) oriented UP, PISTON at (2,4,2) oriented WEST, OBSERVER at (2,4,1) oriented DOWN, REDSTONE_BLOCK at (2,4,0) oriented WEST, SLIME at (2,4,4) oriented EAST, STICKY_PISTON at (2,4,3) oriented SOUTH]

TjRaffert commented 1 year ago

This had a score of 2.465075479555977 Fly, 215.0 Accumulate

TjRaffert commented 1 year ago

59159_BC105BlocksFITNESS[2.465075479555977, 215.0].txt

TjRaffert commented 1 year ago

46544_BC121BlocksFITNESS[2.0011713827425455, 225.0].txt

TjRaffert commented 1 year ago

43081_BC121BlocksFITNESS[2.888132561149057, 219.0].txt

TjRaffert commented 1 year ago

40768_BC116BlocksFITNESS[2.586152488426458, 209.0].txt

schrum2 commented 1 year ago

I may have fixed the issue, but a new unit test using the at least some of the additional shapes that Travis provided is needed.

@JoannaBlatt can work on this Monday

schrum2 commented 1 year ago

@JoannaBlatt made a new unit test, and uncovered some other errors in existing unit tests.

The center of mass fitness now makes a decision about flying machines based solely on the farthest block, and not the distance that the center of mass travels, because some of these new big machines simply leave too many blocks behind to significantly shift the center of mass.