void printNetwork(NEAT::FastNetwork<double> &testNetwork) { return; cout << "Network links:\n"; cout << testNetwork.getLink("Input0","Hidden1")->weight << endl; cout << testNetwork.getLink("Input0","Hidden2")->weight << endl; cout << endl; cout << testNetwork.getLink("Input1","Hidden1")->weight << endl; cout << testNetwork.getLink("Input1","Hidden2")->weight << endl; cout << endl; cout << testNetwork.getLink("Input2","Hidden1")->weight << endl; cout << testNetwork.getLink("Input2","Hidden2")->weight << endl; cout << endl; cout << testNetwork.getLink("Hidden0","Output0")->weight << endl; cout << testNetwork.getLink("Hidden1","Output0")->weight << endl; cout << testNetwork.getLink("Hidden2","Output0")->weight << endl; cout << endl; CREATE_PAUSE(""); }
void ShapesExperiment::printNetworkCPPN(shared_ptr<const NEAT::GeneticIndividual> individual) { cout << "Printing cppn network" << endl; ofstream network_file; network_file.open ("networkCPPN-ThatSolvedTheProblem.txt", ios::trunc ); NEAT::FastNetwork <double> network = individual->spawnFastPhenotypeStack <double>(); //JMC: this creates the network CPPN associated with this individual used to produce the substrate (neural network) network_file << "num links:" << network.getLinkCount() << endl; network_file << "num nodes:" << network.getNodeCount() << endl; int numLinks = network.getLinkCount(); int numNodes = network.getNodeCount(); ActivationFunction activationFunction; //print out which node corresponds to which integer (e.g. so you can translate a fromNode of 1 to "x1" map<string,int> localNodeNameToIndex = *network.getNodeNameToIndex(); for( map<string,int>::iterator iter = localNodeNameToIndex.begin(); iter != localNodeNameToIndex.end(); iter++ ) { network_file << (*iter).first << " is node number: " << (*iter).second << endl; } for (size_t a=0;a<numLinks;a++) { NetworkIndexedLink <double> link = *network.getLink(a); network_file << link.fromNode << "->" << link.toNode << " : " << link.weight << endl; } for (size_t a=0;a<numNodes;a++) { activationFunction = *network.getActivationFunction(a); network_file << " activation function " << a << ": "; if(activationFunction == ACTIVATION_FUNCTION_SIGMOID) network_file << "ACTIVATION_FUNCTION_SIGMOID"; if(activationFunction == ACTIVATION_FUNCTION_SIN) network_file << "ACTIVATION_FUNCTION_SIN"; if(activationFunction == ACTIVATION_FUNCTION_COS) network_file << "ACTIVATION_FUNCTION_COS"; if(activationFunction == ACTIVATION_FUNCTION_GAUSSIAN) network_file << "ACTIVATION_FUNCTION_GAUSSIAN"; if(activationFunction == ACTIVATION_FUNCTION_SQUARE) network_file << "ACTIVATION_FUNCTION_SQUARE"; if(activationFunction == ACTIVATION_FUNCTION_ABS_ROOT) network_file << "ACTIVATION_FUNCTION_ABS_ROOT"; if(activationFunction == ACTIVATION_FUNCTION_LINEAR) network_file << "ACTIVATION_FUNCTION_LINEAR"; if(activationFunction == ACTIVATION_FUNCTION_ONES_COMPLIMENT) network_file << "ACTIVATION_FUNCTION_ONES_COMPLIMENT"; if(activationFunction == ACTIVATION_FUNCTION_END) network_file << "ACTIVATION_FUNCTION_END"; network_file << endl; } network_file.close(); return; }