A flexible Rust framework for building and running genetic algorithm simulations for optimization and search problems.
Genevo is a Rust framework for implementing genetic algorithm simulations to solve optimization and search problems. It provides a modular, trait-based architecture that models the domain of genetic algorithms, allowing developers to customize every component while offering sensible defaults. The library enables experimentation with different selection, crossover, mutation, and termination strategies to find optimal solutions for problems like the knapsack problem or N-Queens.
Rust developers and researchers working on optimization, search problems, or evolutionary computation who need a flexible, extensible framework for genetic algorithm simulations. It's also suitable for educators and students learning about genetic algorithms through practical implementation.
Developers choose Genevo for its extreme flexibility—every component is a trait that can be customized—combined with comprehensive built-in implementations that work out of the box. Its Rust foundation ensures performance and safety, while WASM support enables browser-based simulations, making it unique among GA libraries.
Execute genetic algorithm (GA) simulations in a customizable and extensible way.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
All GA components are defined as traits, enabling extensive customization and extension, as highlighted in the README's philosophy of being 'flexible and greatly extensible.'
Includes common implementations for selection, crossover, mutation, and reinsertion operators, allowing rapid experimentation with different strategies without coding from scratch.
Supports combining termination criteria via a trait-based system, enabling complex conditions like max iterations OR fitness thresholds, as described in the README.
Can be compiled for WASM targets with the wasm-bindgen feature, facilitating GA simulations in browser environments, making it unique among Rust GA libraries.
Each application requires implementing Phenotype, Genotype, and FitnessFunction traits from scratch, adding overhead for simple or quick prototypes.
Focuses on low-level building blocks; lacks built-in support for automated parameter tuning or common optimization problem templates beyond basic examples.
Multithreading is disabled when targeting WebAssembly, as noted in the crate features, which can hinder parallel simulation performance in browser environments.