schrum2 / EvoCraft-SCOPE

0 stars 0 forks source link

Novelty Search for CPPN Shapes #35

Closed schrum2 closed 2 years ago

schrum2 commented 2 years ago

The code for interactive_cppn_evolution.py is based off of the code in picture2d/evolve_interactive.py which was taken from the NEAT-Python repository (https://github.com/CodeReclaimers/neat-python), and it meant to be a simplistic reimplementation of Picbreeder (the one in MM-NEAT is more developed).

However, there is another bit of code: picture2d/evolve_novelty.py. This is based on Novelty Search: http://eplex.cs.ucf.edu/noveltysearch/userspage/

The basic idea is that instead of trying to optimize a specific objective, we try to select individuals that are as different as possible from other things we've seen before. This depends on some kind of characterization of the properties of the thing being evolved. I would like to evolve CPPN-generated shapes with Novelty Search, but we need a way of characterizing the shapes first so we can measure "distance" between shapes in shape-space.

We'll probably want to test a variety of novelty characterizations (typically called behavior characterizations, but that doesn't really make sense in the context of a shape that doesn't do anything), and compare and contrast. So, our first attempt at "distance" can be something simple. Specifically:

A 3D shape is characterized by a flat list (1D) of the blocks which are and are not present. A present block is a 1 and an absent block is a 0. Simple as that! Call this the "presence" characterization.

MuellMark commented 2 years ago

So far, this is able to generate novel things, as seen with the picture below. However, we still need a way of saving and loading everything in the archive, which is what #63 is. From here, it may be interesting to also have other characterizations, specifically for block types, or maybe different distance calculations. 2022-05-31_11 12 01 2022-05-31_11 12 45 2022-05-31_11 12 37 2022-05-31_11 12 42

schrum2 commented 2 years ago

Each new characterization should be a new issue. If that it all that is left, then this can actually be closed.

MuellMark commented 2 years ago

Everything is up and running, and since new characterizations will be new issues, everything here has been added!