This is the top level page for SharpNEAT version 3 development.
The primary goal for version 3 is to attempt to improve the evolutionary selection strategies. Canonical NEAT clusters genomes in the genetic encoding space and adjusts selection pressure based on that clustering. This drives diversity in the genetic encoding space and therefore the neural net structural space, but this has tended not to translate into diversity in the functional and behavioural space. The conjectured issue is that much structure can be added to a network that is not functional, i.e. if we record outputs for a given set of inputs, when comparing networks with very large structural differences we may observe very similar outputs if large sections of structure are not functionally connected (e.g. connected with low weights and/or sparsely connected).
The primary goal then is to generalise the code framework to provide for experimentation around selection strategies, and to then provide some concrete selection strategies that explore new research directions. Support will also be maintained for canonical NEAT based strategies to allow comparisons with canonical NEAT.
Note that some work on selection strategies occurred during the version 2 development cycle (see the pages within SharpNEAT Version 2 section of this wiki), but that was more a refactoring of the existing canonical NEAT selection strategy than a significant rethink of the strategy itself. Specifically, it was noted that canonical NEAT selection was essentially a clustering algorithm based on positions in a genetic encoding space, and so in SharpNEAT V2 the space was formally defined and a standard clustering approach utilised (k-means), in place of NEAT's custom approach.
For SharpNEAT version 3 an exploration of selection strategies that are based on network behaviour and functionality will be the main focus, building on research and observations around so called 'novelty' metrics, where novel behaviour is selected for rather than novel network structure.