Neat-Ex v1.3.0 Neat

Neuro-Evolution of Augmenting Topologies (NEAT) is an algorithm for developing Artificial Neural Networks (ANNs) through the process of evolution.

Neuro-Evolution, unlike back-propogation, easily allows the usage of recurrent neural networks instead of just feed-forward networks, and fitness functions instead of just training data. Additionally, since NEAT augments topologies, all the engine needs to start is the input/output layout, and a fitness function.

Note: new_single_fitness is the simpler starting option. In this case, the fitness function is given an ANN, and returns the fitness. Parallell computation is handled automatically. new_multi_fitness allows more flexibility by providing the entire population of ANNs for evaluation all at once. See the single_fitness_function property listed here for more details.

For example usage and other information, see the README.md.

Summary

Functions

Steps the evolution process forward one step given a Neat struct. Returns the new Neat struct

Repeatedly steps forward the evolution process for a given number of generations. If a print function is provided, it is passed the Neat struct each step for displaying the evolution process

Repeatedly steps forward the evolution process for a given number of minutes. If a print function is provided, it is passed the Neat struct each step for displaying the evolution process

Repeatedly steps forward the evolution process until a given idealFitness is reached. If a print function is provided, it is passed the Neat struct each step for displaying the evolution process

Creates a new Neat given a Neat.Options

Creates a new Neat (and a new Neat.Options) given a seed ANN (in which the initial population is based), a fitness_function (where single_fitness_function is false, see Neat.Options for more info), and a keyword list of optional paramaters. See Neat.Options for a list of paramaters and their defaults

Creates a new Neat (and a new Neat.Options) given a seed ANN (in which the initial population is based), a fitness_function (where single_fitness_function is true, see Neat.Options for more info), and a keyword list of optional paramaters. See Neat.Options for a list of paramaters and their defaults

Functions

evolve(neat)

Steps the evolution process forward one step given a Neat struct. Returns the new Neat struct.

evolveFor(neat, gensToRun, print \\ fn _ -> nil end)

Repeatedly steps forward the evolution process for a given number of generations. If a print function is provided, it is passed the Neat struct each step for displaying the evolution process.

evolveForMins(neat, minsToRun, print \\ fn _ -> nil end, startTime \\ :erlang.monotonic_time(:seconds))

Repeatedly steps forward the evolution process for a given number of minutes. If a print function is provided, it is passed the Neat struct each step for displaying the evolution process.

evolveUntil(neat, idealFitness, print \\ fn _ -> nil end)

Repeatedly steps forward the evolution process until a given idealFitness is reached. If a print function is provided, it is passed the Neat struct each step for displaying the evolution process.

new(opts)

Creates a new Neat given a Neat.Options

new_multi_fitness(seed, fitness_function, opts_keyword_list \\ [])

Creates a new Neat (and a new Neat.Options) given a seed ANN (in which the initial population is based), a fitness_function (where single_fitness_function is false, see Neat.Options for more info), and a keyword list of optional paramaters. See Neat.Options for a list of paramaters and their defaults.

new_single_fitness(seed, fitness_function, opts_keyword_list \\ [])

Creates a new Neat (and a new Neat.Options) given a seed ANN (in which the initial population is based), a fitness_function (where single_fitness_function is true, see Neat.Options for more info), and a keyword list of optional paramaters. See Neat.Options for a list of paramaters and their defaults.