Hi, Keith,
Thanks for the note. I've made good progress creating an EvolvableSubstrate class (and its dependents), adapting Sebastian's code to return an INetworkDefinition. Basically, my goal was to create a class that resembles the one in Substrate.cs except that it would create the hidden layer's substrate via the ES-HyperNeat algorithm instead of specifying it explicitly as HyperNeat requires. I should finish up shortly but have a questions/issues:
1. Sebastian's code do not make use of a bias node. This may be by design but I thought I'd check to make sure.
2. The Substrate.cs definition has a public property, NodeSetList. This property makes sense for HyperNeat where all substrate nodes are known from the start. In ESHyperNeat the hidden layer's substrate nodes would be created in the call to CreateNetworkDefinition. If EvolvableSubstrate is to support that property then either it must throw an InvalidOperationException (since the actual NodeSetList cannot be known generically) or it should return a NodeSetList with just the input and output layers' substrate nodes. Do you have a preference?
3. The CreateNetworkDefinition method takes as a parameter lengthCppnInput. Since this doesn't map to a set of coordinates I'm not sure how to include that in the ESHyperNeat version.
-Scott