def eval_genome(genome, config): net = neat.nn.FeedForwardNetwork.create(genome, config) fitnesses = [] for runs in range(runs_per_net): game = Game(20, 20) # Run the given simulation for up to num_steps time steps. fitness = 0.0 while True: inputs = game.get_normalized_state() action = net.activate(inputs) # Apply action to the simulated snake valid = game.step(np.argmax(action)) # Stop if the network fails to keep the snake within the boundaries or hits itself. # The per-run fitness is the number of pills eaten if not valid: break fitness = game.fitness fitnesses.append(fitness) # The genome's fitness is its worst performance across all runs. return min(fitnesses)
def eval_genome(genome, config): net = neat.nn.FeedForwardNetwork.create(genome, config) fitnesses = [] for runs in range(runs_per_net): #pygame.init() #screen = pygame.display.set_mode((20 * 16,20 * 16)) #screen.fill(pygame.Color('black')) #pygame.display.set_caption('Snake') #pygame.display.flip() sim = Game(20, 20) # Run the given simulation for up to num_steps time steps. fitness = 0.0 while True: inputs = sim.get_normalized_state() action = net.activate(inputs) # Apply action to the simulated snake valid = sim.step(np.argmax(action)) # Stop if the network fails to keep the snake within the boundaries or hits itself. # The per-run fitness is the number of pills eaten if not valid: break fitness = sim.score fitnesses.append(fitness) # The genome's fitness is its worst performance across all runs. return min(fitnesses)