moonlander_gp/lib.rs
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
//! Generic Genetic Programming framework routines
//!
//! This crate supplies a generic framework for solving GP programs.
//! As a consumer, you'll need to supply the following:
//!
//! - Enums to encode the various AST node types.
//! - Implementations of `AstNode`, `Mutatable` and `RandNode` traits
//! (which can usually be autogenerated using `impl_astnode!()`).
//! - A fitness function evaluating the success of a given program.
//!
//! Create `random_population` from your types, then call `evolve` repeatedly to
//! improve the fitness of the population.
//!
//! For a working example, see the `santa_fe_ant` in the `examples/` directory.
extern crate rand;
extern crate rustc_serialize;
extern crate rayon;
#[macro_use] extern crate downcast;
#[macro_use] mod pick;
#[macro_use] pub mod impl_astnode;
mod ast;
pub use ast::{AstNode, Mutatable, clone_or_replace, depth};
mod population;
pub use self::population::Population;
mod random_pop;
pub use self::random_pop::{random_population, RandNode, NodeWeights, retain_best};
pub mod num;
pub mod genetic;
pub use genetic::{ScoreCard, Fitness};
pub use num::Number;