Thanks to visit codestin.com
Credit goes to github.com

Skip to content

goktug97/NEAT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Evolving Neural Networks Through Augmenting Topologies

Python Implementation of NEAT Genetic Algorithm

Snake

Above gif was pure luck and it is from an earlier version which allows connection to inputs and connection from outputs.

Requirements

  • Python >= 3.6

Optional

  • Matplotlib (To draw genomes)

Gym Examples

  • gym
  • mpi4py (Parallel NEAT Example)

Snake Example

Install

git clone https://github.com/goktug97/NEAT
cd NEAT
python3 setup.py install --user

Usage

xor.py

import neat

xor = neat.NEAT(n_networks = 150,
                input_size = 2,
                output_size = 1,
                bias = True,
                c1 = 1.0, c2 = 1.0, c3 = 0.4,
                distance_threshold = 3.0,
                weight_mutation_rate = 0.8,
                node_mutation_rate = 0.03,
                connection_mutation_rate = 0.05,
                interspecies_mating_rate = 0.001,
                disable_rate = 0.75,
                stegnant_threshold = 15,
                input_activation = neat.steepened_sigmoid,
                hidden_activation = neat.steepened_sigmoid,
                output_activation = neat.steepened_sigmoid)

truth_table = [[0, 1],[1, 0]]
solution_found = False

while True:
    print(f'Generation: {xor.generation}')
    rewards = []
    for genome in xor.population:
        error = 0
        for input_1 in range(len(truth_table)):
            for input_2 in range(len(truth_table[0])):
                output = int(round(genome([input_1, input_2])[0]))
                error += abs(truth_table[input_1][input_2] - output)
        fitness = (4 - error) ** 2
        rewards.append(fitness)
        if fitness == 16:
            solution_found = True
            break
    if solution_found:
        break
    xor.next_generation(rewards)

import matplotlib.pyplot as plt
genome.draw()
plt.show()

References

  • Kenneth O. Stanley, , and Risto Miikkulainen. "Evolving Neural Networks Through Augmenting Topologies".Evolutionary Computation 10, no.2 (2002): 99-127.

About

Evolving Neural Networks Through Augmenting Topologies

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages