SharpNEAT

Development Releases and Project Status

The latest SharpNEAT 2 source code is available here. See attachments (below).

The filename format specifies the date/time the source was archived. The format is SharpNEATV2_YYYYMMDD_HHMM.7z

Status (2010-02-08)

The core of SharpNEAT 2 is now written, working and partially tested and debugged; the code is at an 'alpha' stage of release and provides the following:
  • Support for both NEAT and HyperNEAT/CPPNs.
  • Generic framework classes with high level of abstraction and therefore flexibility and reusability in both NEAT and non-NEAT projects.
  • XML IO.
  • Parallel genome decoding and evaluation.
  • XOR and Binary 6-Multiplexer domains for testing.
  • Speciation by k-means clustering (Single thread and Parallel versions). To my knowledge this is the first NEAT implementation to use this approach and as such this code is experimental. Experimental results so far have been positive.
  • Rudimentary GUI for visualizing best genome and some speciation stats. Unlike the core code the GUI is temporary code provided as a harness while developing the core code.

Updates

2010-02-08
Fixed: Interspecies mating throws an index out of bounds exception.

2010-02-01
Futher improved performance and scalability of ParallelKMeansSpeciationStrategy. Will now use between 85-95% of CPU time on an 8 CPU system when speciating a typical set of data/genomes. Also note that in real-life scenarios the problem domain code uses the major share of CPU time.

2010-01-30
XML IO routines for NetworkDefinition and NeatGenome (HyperNEAT also uses this class). XML can be handled as XmlDocuments, however the underlying code operates on XmlReader/XmlWriter thus XML can be streamed directly to/from a stream.

2009-12-30
Implementation of HyperNEAT and CPPNs.

2009-12-13
Parallel SharpNEAT.
The new ParallelGenomeListEvaluator class is a direct replacement for SimpleGenomeListEvaluator and allows genome decoding and evaluation to occur on multuple execution threads.
ParallelKMeansSpeciationStrategy is a parallel version of KMeansSpeciationStrategy. This uses the Parallel Extensions library (see section on dependencies below).

2009-12-06
Refactored/rewrote network visualization code. Preparation for visualization of a wider range of genome types, e.g. CPPNs (with activation function per node), Genetic Programming networks/trees, etc.


Dependencies
ParallelKMeansSpeciationStrategy requires Parallel Extensions(PE), or alternatively use the non-parallel version KMeansSpeciationStrategy. The dependency manifests itself as a reference to System.Threading.dll. PE will be part of .Net 4 and as such is currently available in the .Net 4 beta releases, alternatively PE is also part of the Reactive Extensions for .Net(Rx), simply download and install to obtain the required DLLs in "C:\Program Files\Microsoft Reactive Extensions". On Mono PE is not currently part of the official releases but is available as a separate project as source code produced as part of the Google Summer of Code 2008 (http://code.google.com/p/mono-soc-2008/source/checkout).

In addition, on the Windows platform PE is dependent on .Net 3.5.


Known Problems

        None currently.


To Do

High Priority
  • Phased Searching (Compexifying-Simplifying). New flexibly defined phase change criteria. E.g. Hard complexity limits.
  • Old species culling.
  • 3D HyperNEAT substrates (and/or substrate layers)
  • Feedforward-only neural network support.
  • GUI
  • Stats
Other
  • Centroid calculation for L1/Manhattan distance metric.
  • GP / Hyper GP. Genetic programming trees are a further restriction on topology beyond recursive and then feedforward-only networks.
  • Periodic innovation ID defragmentation.
  • Population-wide integrity checks. e.g. ensure a given innovation ID is not being used in nodes *and* connections.
  • Regularized k-means speciation.
  • Pearson correlation distance metric.
  • Distributed NEAT. Island model. (+ binary/fast IO).
  • Generate framework documentation (ndoc, sandcastle, etc.)
  • Simple tutorial to get people started.
  • Mono.Simd / CUDA acceleration.
  • NUnit tests
  • Copyright notices.


Attachments (1)

  • SharpNeatV2_20100208_2351.7z - on 8 Feb 2010 15:52 by Colin Green (version 1)
    827k Download