1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
//! `neuralneat` is an implementation of the [NeuroEvolution of Augmenting
//! Topologies](https://nn.cs.utexas.edu/downloads/papers/stanley.ec02.pdf)
//! (NEAT) described in the June 2002 paper titled "Evolving Neural
//! Networks through Augmenting Topologies" by Kenneth O. Stanley and Risto
//! Miikkulainen.
//!
//! Much of this implementation was also guided by the [NEAT 1.2.1 source code](
//! https://nn.cs.utexas.edu/?neat).
//!
//! # Basic usage:
//!
//! ```
//! use neuralneat::{Genome, Pool, Trainer};
//! use neuralneat::evaluation::TrainingData;
//!
//! // To do something useful, you need to decide what your training data is!
//! fn load_training_data() -> Vec<TrainingData> {
//! return vec![];
//! }
//!
//! fn main() {
//! let input_nodes = 5;
//! let output_nodes = 1;
//! // Create an initial pool of Genomes
//! let mut gene_pool = Pool::with_defaults(input_nodes, output_nodes);
//!
//! // Load the data that will be used to train and evolve the Genomes
//! let training_data: Vec<TrainingData> = load_training_data();
//!
//! // A Trainer can manage the process of training a population of Genomes
//! // over successive generations.
//! let mut trainer = Trainer::new(training_data);
//!
//! trainer.train(
//! &mut gene_pool,
//! // Train for 100 generations
//! 100,
//! );
//!
//! // The winner!
//! let best_genome = gene_pool.get_best_genome();
//! }
//! ```
/// The [defaults] module contains the default values of all of the constants
/// used by the [Pool] to create, mutate, and mate [Genomes](Genome).
pub mod defaults;
/// The [evaluation] module contains functions and types related to the process
/// of evaluating and activating the neural network of a [Genome], such as
/// basic activation functions that can be used with hidden and output layers
/// of a [Genome].
pub mod evaluation;
mod genome;
mod pool;
mod species;
mod training;
pub use genome::{Genome, GenomeStats};
pub use pool::{Pool, PoolStats};
pub use species::{Species, SpeciesStats};
pub use training::Trainer;