def _calculate_solution_value(self, solution, data_set, learner):
     X = get_input_variables(data_set).values
     target = get_target_variable(data_set).values
     neural_network = FeedForwardNetwork.create(solution,
                                                learner.configuration)
     prediction = self._predict_neural_network(neural_network, X)
     return self.metric.evaluate(prediction, target)
Exemplo n.º 2
0
 def _predict_genome(self, genome):
     neural_network = FeedForwardNetwork.create(genome, self.configuration)
     predictions = array([])
     for data in self.input_matrix:
         predictions = append(predictions,
                              float(neural_network.activate(data)[0]))
     return predictions
Exemplo n.º 3
0
 def predict(self, input_matrix):
     neural_network = FeedForwardNetwork.create(self.champion,
                                                self.configuration)
     predictions = array([])
     for data in input_matrix:
         predictions = append(predictions,
                              float(neural_network.activate(data)[0]))
     return predictions
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_local.log", evaluator.eval_genome)
    pop.add_reporter(logger)

    winner = pop.run(eval_genomes, n_generations)

    node_names = {
        -1: 'Cart Position',
        -2: 'Cart Velocity',
        -3: 'Pole Angle',
        -4: 'Pole Velocity At Tip',
        0: 'Push cart to the left or to the right'
    }

    # Visualization
    visualize.draw_net(config,
                       winner,
                       True,
                       filename="graph_neat_examples_CartPole-v1",
                       node_names=node_names)
    visualize.plot_stats(stats,
                         ylog=False,
                         view=True,
                         filename="stats_neat_examples_CartPole-v1")
    visualize.plot_species(stats,
                           view=True,
                           filename="species_neat_examples_CartPole-v1")

    winner_net = FeedForwardNetwork.create(winner, config)

    return winner_net
Exemplo n.º 5
0
def develop_phenotype(genome, config):
    pooling_net = FeedForwardNetwork.create(
        genome=genome.pooling_genome,
        config=POOL_CONFIG,
    )
    decision_net = FeedForwardNetwork.create(
        genome=genome.decision_genome,
        config=DECISION_CONFIG,
    )

    memoized_pooling_activation = lru_cache()(pooling_net.activate)

    def brain(inputs):
        pooled_layer = [
            memoized_pooling_activation(seq)[0] for seq in inputs
        ]

        decision_layer = decision_net.activate(pooled_layer)

        return decision_layer

    return brain
Exemplo n.º 6
0
 def reset(self, genome, config):
     self.net = FeedForwardNetwork.create(genome, config)