void Evolver::doStep() { judge->parent = this; if (genIdx == 0) { for (int i = 0; i < genSize; i++) { NeuralNet* n = new NeuralNet(1, 0, 1); for (int i = 0; i < 10; i++) { n->mutate(); } generation.push_back( n ); } } genIdx++; setlocale(LC_ALL, "C"); generation = judge->rate(generation); while(generation.size() < genSize) { NeuralNet* n = new NeuralNet(1, 0, 1); *n = *generation[rand() % generation.size()]; for (int i = 0; i < 20; i++) { n->mutate(); } generation.push_back(n); } }
void NeuroEvo::generate_new_members() { // Mutate existing members to generate more list<NeuralNet*>::iterator popMember = population.begin(); for (int i = 0; i < params->popSize; i++) { // add k new members // commented out so that you take parent's evaluation // (*popMember)->evaluation = 0.0; // dereference pointer AND iterator NeuralNet* m = new NeuralNet(**popMember); m->mutate(); population.push_back(m); ++popMember; } }