def evolve_atari_network(game, input_size): ne = NE.GSP(input_size,18,2,[],True) NUM_GENERATIONS = 1000 best_fitness = -10000000 best_net = None generation = 0 while generation < NUM_GENERATIONS: curr_best_fitness = -10000000 # test each subpopulation for i in range(ne.populationSize): sim = Simulator(game) currnet = ne.testNet(i) fitness = 0 while sim.running(): sim.read() fitness += sim.reward #print "{}, ".format(fitness), currnet.clearCharges() currnet.setInputs(sim.objects.reshape(input_size*80,1)) currnet.activate() output = currnet.readOutputs() sim.write('{},18\n'.format(np.argmax(output))) ne.evaluate(fitness, i) if fitness > curr_best_fitness: curr_best_fitness = fitness #currnet.visualize() if fitness > best_fitness: best_fitness = fitness pickle.dump(currnet, open('nets/{}.net'.format(game),'wb')) #best_net = copy.deepcopy(currnet) #best_net.visualize() print "gen: {}\ti: {}\trew: {}\tbest: {}\t end: {}" \ .format(generation, i, fitness, best_fitness, sim.terminated) sim.kill() with open('nets/{}.curve'.format(game),'a') as curve: curve.write(str(curr_best_fitness)+',') print "Gen " + str(generation) + ", Best: " + str(curr_best_fitness) ne.nextGen() generation += 1 print "Generation "+str(generation)+", task complete."