A fast, parallel, and extensible genetic algorithms framework implemented in Rust for solving optimization problems.
Oxigen is a parallel genetic algorithm framework written in Rust, designed for high-performance optimization and search problems. It provides a flexible architecture that allows developers to customize every aspect of the algorithm, from mutation rates to selection functions, making it suitable for a wide range of applications.
Researchers and developers working on optimization, search, or coevolutionary problems who need a high-performance, customizable genetic algorithm framework in Rust.
Developers choose Oxigen for its parallel execution leveraging Rust's concurrency, extensive customization via traits for all algorithm components, and features like fitness caching and execution resumption that enhance performance and flexibility.
Fast, parallel, extensible and adaptable genetic algorithms framework written in Rust
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages Rust's concurrency to solve complex problems like N-Queens for N=255 in seconds, as demonstrated in benchmarks with parallel execution across multiple cores.
Offers extensible traits for mutation, selection, crossover, and survival pressure, allowing developers to implement any genetic algorithm variant, from simple to coevolutionary approaches.
Includes individual caching and an optional global cache to minimize redundant fitness evaluations, significantly improving performance for expensive objective functions, as highlighted in the README.
Supports execution resumption, progress tracking to files, and coevolution with nested GA runs, facilitating long-term optimization experiments and detailed analysis.
Requires manual setup of numerous parameters like mutation rates and selection functions, which can be overwhelming for standard genetic algorithms and error-prone for newcomers.
Tied exclusively to Rust, limiting adoption for teams using other languages or needing cross-platform compatibility, with fewer resources compared to established libraries in Python or Java.
The global cache feature can increase RAM usage and computational cost for problems with cheap fitness evaluations, as the README admits it may not always be beneficial.
The README notes bugs in cargo workspaces when building from the root folder, which can complicate development and contribution, as referenced in issues #12 and #19.