Python neat.StdOutReporter() Examples
The following are 30
code examples of neat.StdOutReporter().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
neat
, or try the search function
.
Example #1
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 11 votes |
def test_parallel(): """Test parallel run using ParallelEvaluator (subprocesses).""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(VERBOSE)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(1, 5)) # Run for up to 19 generations. pe = neat.ParallelEvaluator(1 + multiprocessing.cpu_count(), eval_dummy_genome_nn) p.run(pe.evaluate, 19) stats.save()
Example #2
Source File: run_cartpole.py From Evolutionary-Algorithm with MIT License | 6 votes |
def run(): config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, CONFIG) pop = neat.Population(config) # recode history stats = neat.StatisticsReporter() pop.add_reporter(stats) pop.add_reporter(neat.StdOutReporter(True)) pop.add_reporter(neat.Checkpointer(5)) pop.run(eval_genomes, 10) # train 10 generations # visualize training visualize.plot_stats(stats, ylog=False, view=True) visualize.plot_species(stats, view=True)
Example #3
Source File: trainer.py From go_dino with GNU General Public License v3.0 | 6 votes |
def main(): local_dir = os.path.dirname(__file__) config = Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, os.path.join(local_dir, 'train_config.txt')) config.save_best = True config.checkpoint_time_interval = 3 pop = population.Population(config) stats = neat.StatisticsReporter() pop.add_reporter(stats) pop.add_reporter(neat.StdOutReporter(True)) pop.add_reporter(neat.StatisticsReporter()) pop.add_reporter(neat.Checkpointer(2)) winner = pop.run(eval_fitness, 100) with open('winner.pkl', 'wb') as f: pickle.dump(winner, f)
Example #4
Source File: train.py From super-mario-neat with MIT License | 6 votes |
def _run(self, config_file, n): config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file) p = neat.Population(config) p.add_reporter(neat.StdOutReporter(True)) p.add_reporter(neat.Checkpointer(5)) stats = neat.StatisticsReporter() p.add_reporter(stats) print("loaded checkpoint...") winner = p.run(self._eval_genomes, n) win = p.best_genome pickle.dump(winner, open('winner.pkl', 'wb')) pickle.dump(win, open('real_winner.pkl', 'wb')) visualize.draw_net(config, winner, True) visualize.plot_stats(stats, ylog=False, view=True) visualize.plot_species(stats, view=True)
Example #5
Source File: cont_train.py From super-mario-neat with MIT License | 6 votes |
def _run(self, config_file, n): config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file) # p = neat.Population(config) p = neat.Checkpointer.restore_checkpoint(self.file_name) p.add_reporter(neat.StdOutReporter(True)) p.add_reporter(neat.Checkpointer(5)) stats = neat.StatisticsReporter() p.add_reporter(stats) print("loaded checkpoint...") winner = p.run(self._eval_genomes, n) win = p.best_genome pickle.dump(winner, open('winner.pkl', 'wb')) pickle.dump(win, open('real_winner.pkl', 'wb')) visualize.draw_net(config, winner, True) visualize.plot_stats(stats, ylog=False, view=True) visualize.plot_species(stats, view=True)
Example #6
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_run_nn_recurrent(): """Basic test of nn.recurrent function.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) config.feed_forward = False # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(VERBOSE)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(1, 5)) # Run for up to 19 generations. p.run(eval_dummy_genomes_nn_recurrent, 19) stats.save()
Example #7
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_threaded_evaluation(): """Tests a neat evolution using neat.threaded.ThreadedEvaluator""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(1, 5)) # Run for up to 19 generations. pe = neat.ThreadedEvaluator(4, eval_dummy_genome_nn) p.run(pe.evaluate, 19) stats.save()
Example #8
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 6 votes |
def test_serial_extinction_exception(): """Test for complete extinction with exception.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) config.stagnation_config.max_stagnation = 1 config.stagnation_config.species_elitism = 0 # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) try: # Run for up to 45 generations. p.run(eval_dummy_genomes_nn, 45) except Exception: pass else: raise Exception("Should have had a complete extinction at some point!")
Example #9
Source File: neat_es.py From DistributedES with Apache License 2.0 | 5 votes |
def evolve(self): class CustomReporter(BaseReporter): def __init__(self, agent): self.fitness = [] self.steps = [] self.timestamps = [] self.agent = agent self.initial_time = time.time() def post_evaluate(self, config, population, species, best_genome): elapsed_time = time.time() - self.initial_time self.steps.append(self.agent.total_steps) self.timestamps.append(elapsed_time) reward, _ = self.agent.test(best_genome) self.fitness.append(reward) # self.fitness.append(best_genome.fitness) logger.info('total steps %d, test %f, best %f, elapsed time %f' % (self.agent.total_steps, reward, best_genome.fitness, elapsed_time)) # if best_genome.fitness > self.agent.config.target: # self.agent.stop.value = True if self.agent.config.max_steps and self.agent.total_steps > self.agent.config.max_steps: self.agent.stop.value = True self.stats = [self.fitness, self.steps, self.timestamps] best_genome.fitness = self.agent.config.target + 1 pop = neat.Population(self.neat_config) # stats = neat.StatisticsReporter() # pop.add_reporter(stats) # pop.add_reporter(neat.StdOutReporter(True)) reporter = CustomReporter(self) pop.add_reporter(reporter) pop.run(self.evaluate) return reporter.stats
Example #10
Source File: main.py From PyTorch-NEAT with Apache License 2.0 | 5 votes |
def run(n_generations): # Load the config file, which is assumed to live in # the same directory as this script. config_path = os.path.join(os.path.dirname(__file__), "neat.cfg") config = neat.Config( neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path, ) evaluator = MultiEnvEvaluator( make_net, activate_net, make_env=make_env, max_env_steps=max_env_steps ) def eval_genomes(genomes, config): for _, genome in genomes: genome.fitness = evaluator.eval_genome(genome, config) pop = neat.Population(config) stats = neat.StatisticsReporter() pop.add_reporter(stats) reporter = neat.StdOutReporter(True) pop.add_reporter(reporter) logger = LogReporter("neat.log", evaluator.eval_genome) pop.add_reporter(logger) pop.run(eval_genomes, n_generations)
Example #11
Source File: main.py From TensorFlow-NEAT with Apache License 2.0 | 5 votes |
def run(n_generations): # Load the config file, which is assumed to live in # the same directory as this script. config_path = os.path.join(os.path.dirname(__file__), "neat.cfg") config = neat.Config( neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path, ) evaluator = MultiEnvEvaluator( make_net, activate_net, make_env=make_env, max_env_steps=max_env_steps ) def eval_genomes(genomes, config): for _, genome in genomes: genome.fitness = evaluator.eval_genome(genome, config) pop = neat.Population(config) stats = neat.StatisticsReporter() pop.add_reporter(stats) reporter = neat.StdOutReporter(True) pop.add_reporter(reporter) logger = LogReporter("./logs/neat.json", evaluator.eval_genome) pop.add_reporter(logger) pop.run(eval_genomes, n_generations)
Example #12
Source File: run_xor.py From Evolutionary-Algorithm with MIT License | 5 votes |
def run(config_file): # Load configuration. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(50)) # Run for up to 300 generations. winner = p.run(eval_genomes, 300) # Display the winning genome. print('\nBest genome:\n{!s}'.format(winner)) # Show output of the most fit genome against training data. print('\nOutput:') winner_net = neat.nn.FeedForwardNetwork.create(winner, config) for xi, xo in zip(xor_inputs, xor_outputs): output = winner_net.activate(xi) print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)) node_names = {-1:'A', -2: 'B', 0:'A XOR B'} visualize.draw_net(config, winner, True, node_names=node_names) visualize.plot_stats(stats, ylog=False, view=True) visualize.plot_species(stats, view=True) p = neat.Checkpointer.restore_checkpoint('neat-checkpoint-49') p.run(eval_genomes, 10)
Example #13
Source File: test_distributed.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run_secondary(addr, authkey, num_workers=1): """Starts a DistributedEvaluator in secondary mode.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) # Run for the specified number of generations. de = neat.DistributedEvaluator( addr, authkey=authkey, eval_function=eval_dummy_genome_nn, mode=MODE_SECONDARY, num_workers=num_workers, ) try: de.start(secondary_wait=3, exit_on_stop=True) except SystemExit: pass else: raise Exception("DistributedEvaluator in secondary mode did not try to exit!")
Example #14
Source File: test_distributed.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run_primary(addr, authkey, generations): """Starts a DistributedEvaluator in primary mode.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(max(1, int(generations / 3)), 5)) # Run for the specified number of generations. de = neat.DistributedEvaluator( addr, authkey=authkey, eval_function=eval_dummy_genome_nn, mode=MODE_PRIMARY, secondary_chunksize=15, ) print("Starting DistributedEvaluator") sys.stdout.flush() de.start() print("Running evaluate") sys.stdout.flush() p.run(de.evaluate, generations) print("Evaluated") sys.stdout.flush() de.stop(wait=5) print("Did de.stop") sys.stdout.flush() stats.save()
Example #15
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_run_iznn(): """ Basic test of spiking neural network (iznn). [TODO: Takes the longest of any of the tests in this file, by far. Why?] Was because had population of 290 thanks to too much speciation - too-high compatibility_weight_coefficient relative to range for weights. """ # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration_iznn') config = neat.Config(neat.iznn.IZGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(2, 10)) # Run for up to 20 generations. p.run(eval_dummy_genomes_iznn, 20) stats.save() unique_genomes = stats.best_unique_genomes(5) assert 1 <= len(unique_genomes) <= 5, "Unique genomes: {!r}".format(unique_genomes) genomes = stats.best_genomes(5) assert len(genomes) == 5, "Genomes: {!r}".format(genomes) stats.best_genome() p.remove_reporter(stats)
Example #16
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_serial_extinction_no_exception(): """Test for complete extinction without exception.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) config.stagnation_config.max_stagnation = 1 config.stagnation_config.species_elitism = 0 config.reset_on_extinction = True # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. reporter = neat.StdOutReporter(True) p.add_reporter(reporter) stats = neat.StatisticsReporter() p.add_reporter(stats) # Run for up to 45 generations. p.run(eval_dummy_genomes_nn, 45) assert reporter.num_extinctions > 0, "No extinctions happened!" stats.save() p.remove_reporter(stats)
Example #17
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_serial3(): """Test more configuration variations for simple serial run.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration3') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) if VERBOSE: print("config.genome_config.__dict__: {!r}".format( config.genome_config.__dict__)) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(VERBOSE)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(15, 1)) # Run for up to 45 generations. p.run(eval_dummy_genomes_nn, 45) stats.save() # stats.save_genome_fitness(with_cross_validation=True) stats.get_fitness_stdev() stats.best_unique_genomes(5) stats.best_genomes(5) stats.best_genome() p.remove_reporter(stats)
Example #18
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_serial_random(): """Test basic (dummy fitness function) non-parallel run w/random activation, aggregation init.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration2') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) if VERBOSE: print("config.genome_config.__dict__: {!r}".format( config.genome_config.__dict__)) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(VERBOSE)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(15, 1)) # Run for up to 45 generations. p.run(eval_dummy_genomes_nn, 45) stats.save() # stats.save_genome_fitness(with_cross_validation=True) stats.get_fitness_stdev() stats.best_unique_genomes(5) stats.best_genomes(5) stats.best_genome() p.remove_reporter(stats)
Example #19
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_serial(): """Test basic (dummy fitness function) non-parallel run.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(1, 5)) # Run for up to 19 generations. p.run(eval_dummy_genomes_nn, 19) stats.save() # stats.save_genome_fitness(with_cross_validation=True) assert len(stats.get_fitness_stdev()) stats.best_unique_genomes(5) stats.best_genomes(5) stats.best_genome() p.remove_reporter(stats)
Example #20
Source File: test_xor_example_distributed.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run_secondary(addr, authkey, num_workers=1): # Determine path to configuration file. This path manipulation is # here so that the script will run successfully regardless of the # current working directory. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration2') # Load configuration. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) # Run for the specified number of generations. de = neat.DistributedEvaluator( addr, authkey=authkey, eval_function=eval_genome_distributed, mode=MODE_SECONDARY, num_workers=num_workers, ) try: de.start(secondary_wait=3, exit_on_stop=True, reconnect=True) except SystemExit: pass else: raise Exception("DistributedEvaluator in secondary mode did not try to exit!")
Example #21
Source File: test_simple_run.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_serial4(): """Test more configuration variations for simple serial run.""" # Load configuration. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'test_configuration4') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) if VERBOSE: print("config.genome_config.__dict__: {!r}".format( config.genome_config.__dict__)) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(VERBOSE)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(15, 1)) # Run for up to 45 generations. p.run(eval_dummy_genomes_nn, 45) stats.save() # stats.save_genome_fitness(with_cross_validation=True) stats.get_fitness_stdev() stats.best_unique_genomes(5) stats.best_genomes(5) stats.best_genome() p.remove_reporter(stats)
Example #22
Source File: evolve_interactive.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run(): # 128x128 thumbnails, 1500x1500 rendered images, 1100x810 viewer, grayscale images, 4 worker processes. pb = PictureBreeder(128, 128, 1500, 1500, 1100, 810, 'gray', 4) # Determine path to configuration file. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'interactive_config') # Note that we provide the custom stagnation class to the Config constructor. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, InteractiveStagnation, config_path) # Make sure the network has the expected number of outputs. if pb.scheme == 'color': config.output_nodes = 3 else: config.output_nodes = 1 config.pop_size = pb.num_cols * pb.num_rows pop = neat.Population(config) # Add a stdout reporter to show progress in the terminal. pop.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() pop.add_reporter(stats) while 1: pb.generation = pop.generation + 1 pop.run(pb.eval_fitness, 1)
Example #23
Source File: evolve-feedforward-parallel.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run(config_file): # Load configuration. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) # Run for up to 300 generations. pe = neat.ParallelEvaluator(multiprocessing.cpu_count(), eval_genome) winner = p.run(pe.evaluate, 300) # Display the winning genome. print('\nBest genome:\n{!s}'.format(winner)) # Show output of the most fit genome against training data. print('\nOutput:') winner_net = neat.nn.FeedForwardNetwork.create(winner, config) for xi, xo in zip(xor_inputs, xor_outputs): output = winner_net.activate(xi) print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)) node_names = {-1:'A', -2: 'B', 0:'A XOR B'} visualize.draw_net(config, winner, True, node_names = node_names) visualize.plot_stats(stats, ylog=False, view=True) visualize.plot_species(stats, view=True)
Example #24
Source File: evolve-feedforward.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run(config_file): # Load configuration. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(5)) # Run for up to 300 generations. winner = p.run(eval_genomes, 300) # Display the winning genome. print('\nBest genome:\n{!s}'.format(winner)) # Show output of the most fit genome against training data. print('\nOutput:') winner_net = neat.nn.FeedForwardNetwork.create(winner, config) for xi, xo in zip(xor_inputs, xor_outputs): output = winner_net.activate(xi) print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)) node_names = {-1:'A', -2: 'B', 0:'A XOR B'} visualize.draw_net(config, winner, True, node_names=node_names) visualize.plot_stats(stats, ylog=False, view=True) visualize.plot_species(stats, view=True) p = neat.Checkpointer.restore_checkpoint('neat-checkpoint-4') p.run(eval_genomes, 10)
Example #25
Source File: evolve-feedforward-partial.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run(config_file): # Load configuration. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(5)) # Run for up to 300 generations. winner = p.run(eval_genomes, 300) # Display the winning genome. print('\nBest genome:\n{!s}'.format(winner)) # Show output of the most fit genome against training data. print('\nOutput:') winner_net = neat.nn.FeedForwardNetwork.create(winner, config) for xi, xo in zip(xor_inputs, xor_outputs): output = winner_net.activate(xi) print("input {!r}, expected output {!r}, got {!r}".format(xi, xo, output)) node_names = {-1:'A', -2: 'B', 0:'A XOR B'} visualize.draw_net(config, winner, True, node_names=node_names) visualize.plot_stats(stats, ylog=False, view=True) visualize.plot_species(stats, view=True) p = neat.Checkpointer.restore_checkpoint('neat-checkpoint-4') p.run(eval_genomes, 10)
Example #26
Source File: evolve-ctrnn.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run(): # Load the config file, which is assumed to live in # the same directory as this script. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'config-ctrnn') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) pop = neat.Population(config) stats = neat.StatisticsReporter() pop.add_reporter(stats) pop.add_reporter(neat.StdOutReporter(True)) pe = neat.ParallelEvaluator(multiprocessing.cpu_count(), eval_genome) winner = pop.run(pe.evaluate) # Save the winner. with open('winner-ctrnn', 'wb') as f: pickle.dump(winner, f) print(winner) visualize.plot_stats(stats, ylog=True, view=True, filename="ctrnn-fitness.svg") visualize.plot_species(stats, view=True, filename="ctrnn-speciation.svg") node_names = {-1: 'x', -2: 'dx', -3: 'theta', -4: 'dtheta', 0: 'control'} visualize.draw_net(config, winner, True, node_names=node_names) visualize.draw_net(config, winner, view=True, node_names=node_names, filename="winner-ctrnn.gv") visualize.draw_net(config, winner, view=True, node_names=node_names, filename="winner-ctrnn-enabled.gv", show_disabled=False) visualize.draw_net(config, winner, view=True, node_names=node_names, filename="winner-ctrnn-enabled-pruned.gv", show_disabled=False, prune_unused=True)
Example #27
Source File: evolve-feedforward.py From neat-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run(): # Load the config file, which is assumed to live in # the same directory as this script. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'config-feedforward') config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) pop = neat.Population(config) stats = neat.StatisticsReporter() pop.add_reporter(stats) pop.add_reporter(neat.StdOutReporter(True)) pe = neat.ParallelEvaluator(multiprocessing.cpu_count(), eval_genome) winner = pop.run(pe.evaluate) # Save the winner. with open('winner-feedforward', 'wb') as f: pickle.dump(winner, f) print(winner) visualize.plot_stats(stats, ylog=True, view=True, filename="feedforward-fitness.svg") visualize.plot_species(stats, view=True, filename="feedforward-speciation.svg") node_names = {-1: 'x', -2: 'dx', -3: 'theta', -4: 'dtheta', 0: 'control'} visualize.draw_net(config, winner, True, node_names=node_names) visualize.draw_net(config, winner, view=True, node_names=node_names, filename="winner-feedforward.gv") visualize.draw_net(config, winner, view=True, node_names=node_names, filename="winner-feedforward-enabled.gv", show_disabled=False) visualize.draw_net(config, winner, view=True, node_names=node_names, filename="winner-feedforward-enabled-pruned.gv", show_disabled=False, prune_unused=True)
Example #28
Source File: evolve_novelty.py From neat-python with BSD 3-Clause "New" or "Revised" License | 4 votes |
def run(): # Determine path to configuration file. local_dir = os.path.dirname(__file__) config_path = os.path.join(local_dir, 'novelty_config') # Note that we provide the custom stagnation class to the Config constructor. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path) ne = NoveltyEvaluator(4, 'color') if ne.scheme == 'color': config.output_nodes = 3 else: config.output_nodes = 1 pop = neat.Population(config) # Add a stdout reporter to show progress in the terminal. pop.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() pop.add_reporter(stats) while 1: pop.run(ne.evaluate, 1) winner = stats.best_genome() if ne.scheme == 'gray': image = eval_gray_image(winner, config, full_scale * width, full_scale * height) elif ne.scheme == 'color': image = eval_color_image(winner, config, full_scale * width, full_scale * height) elif ne.scheme == 'mono': image = eval_mono_image(winner, config, full_scale * width, full_scale * height) else: raise Exception('Unexpected scheme: {0!r}'.format(ne.scheme)) im = np.clip(np.array(image), 0, 255).astype(np.uint8) im = ne.image_from_array(im) im.save('winning-novelty-{0:06d}.png'.format(pop.generation)) if ne.scheme == 'gray': image = eval_gray_image(winner, config, width, height) elif ne.scheme == 'color': image = eval_color_image(winner, config, width, height) elif ne.scheme == 'mono': image = eval_mono_image(winner, config, width, height) else: raise Exception('Unexpected scheme: {0!r}'.format(ne.scheme)) float_image = np.array(image, dtype=np.float32) / 255.0 ne.archive.append(float_image)
Example #29
Source File: main.py From PyTorch-NEAT with Apache License 2.0 | 4 votes |
def run(n_generations, n_processes): # Load the config file, which is assumed to live in # the same directory as this script. config_path = os.path.join(os.path.dirname(__file__), "neat.cfg") config = neat.Config( neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_path, ) envs = [t_maze.TMazeEnv(init_reward_side=i, n_trials=100) for i in [1, 0, 1, 0]] evaluator = MultiEnvEvaluator( make_net, activate_net, envs=envs, batch_size=batch_size, max_env_steps=1000 ) if n_processes > 1: pool = multiprocessing.Pool(processes=n_processes) def eval_genomes(genomes, config): fitnesses = pool.starmap( evaluator.eval_genome, ((genome, config) for _, genome in genomes) ) for (_, genome), fitness in zip(genomes, fitnesses): genome.fitness = fitness else: def eval_genomes(genomes, config): for i, (_, genome) in enumerate(genomes): try: genome.fitness = evaluator.eval_genome( genome, config, debug=DEBUG and i % 100 == 0 ) except Exception as e: print(genome) raise e pop = neat.Population(config) stats = neat.StatisticsReporter() pop.add_reporter(stats) reporter = neat.StdOutReporter(True) pop.add_reporter(reporter) logger = LogReporter("log.json", evaluator.eval_genome) pop.add_reporter(logger) winner = pop.run(eval_genomes, n_generations) print(winner) final_performance = evaluator.eval_genome(winner, config) print("Final performance: {}".format(final_performance)) generations = reporter.generation + 1 return generations
Example #30
Source File: two_pole_markov_experiment.py From Hands-on-Neuroevolution-with-Python with MIT License | 4 votes |
def run_experiment(config_file, n_generations=100, silent=False): """ The function to run the experiment against hyper-parameters defined in the provided configuration file. The winner genome will be rendered as a graph as well as the important statistics of neuroevolution process execution. Arguments: config_file: the path to the file with experiment configuration Returns: True if experiment finished with successful solver found. """ # set random seed seed = 1559231616#int(time.time())# random.seed(seed) # Load configuration. config = neat.Config(neat.DefaultGenome, neat.DefaultReproduction, neat.DefaultSpeciesSet, neat.DefaultStagnation, config_file) # Create the population, which is the top-level object for a NEAT run. p = neat.Population(config) # Add a stdout reporter to show progress in the terminal. p.add_reporter(neat.StdOutReporter(True)) stats = neat.StatisticsReporter() p.add_reporter(stats) p.add_reporter(neat.Checkpointer(5, filename_prefix='out/tpbm-neat-checkpoint-')) # Run for up to N generations. best_genome = p.run(eval_genomes, n=n_generations) # Display the best genome among generations. print('\nBest genome:\n{!s}'.format(best_genome)) # Check if the best genome is a winning Double-Pole-Markov balancing controller net = neat.nn.FeedForwardNetwork.create(best_genome, config) print("\n\nEvaluating the best genome in random runs") success_runs = evaluate_best_net(net, config, additional_num_runs) print("Runs successful/expected: %d/%d" % (success_runs, additional_num_runs)) if success_runs == additional_num_runs: print("SUCCESS: The stable Double-Pole-Markov balancing controller found!!!") else: print("FAILURE: Failed to find the stable Double-Pole-Markov balancing controller!!!") print("Random seed:", seed) # Visualize the experiment results if not silent or success_runs == additional_num_runs: node_names = {-1:'x', -2:'dot_x', -3:'θ_1', -4:'dot_θ_1', -5:'θ_2', -6:'dot_θ_2', 0:'action'} visualize.draw_net(config, best_genome, True, node_names=node_names, directory=out_dir, fmt='svg') visualize.plot_stats(stats, ylog=False, view=True, filename=os.path.join(out_dir, 'avg_fitness.svg')) visualize.plot_species(stats, view=True, filename=os.path.join(out_dir, 'speciation.svg')) return success_runs == additional_num_runs