Expand description
Tools for evolutionary algorithms
Eviolite is a set of tools and algorithms for evolutionary computing in Rust.
It is written in a performance-minded, minimal-copy style,
and uses rayon
to parallelize the most computationally intensive parts.
It also includes a drop-in replacement for rand
’s thread_rng
that is fully reproducible and can be seeded from an environment variable.
This means that if you get a run you like,
you can share that seed with someone else alongside your program
and they will be guaranteed to get the same output you got.
The general workflow is to implement Solution
for a type you wish to optimize,
construct an instance of Evolution
, and call one of its run_
methods.
§Features
The ndarray
crate feature enables the crossover
and mutation
modules,
which contain helpful functions for using Eviolite alongside the ndarray
crate.
Modules§
- alg
- Pre-built algorithms
- crossover
ndarray
- Commonly used crossover operators for ndarrays
- fitness
- Representation and evaluation of fitness values
- hof
- Keeping track of the best solutions across generations
- mutation
ndarray
- Commonly used mutation operators for ndarrays
- prelude
- Convenience re-export of commonly used items
- repro_
rng - Reproducible and globally seedable version of
rand
’sthread_rng
- select
- Selection operators
- stats
- Per-generation statistical analysis
Structs§
- Cached
- A wrapper around a solution that automatically caches the fitness value
- Evolution
- A single run of an evolutionary algorithm.
- Generation
- Container type passed to callbacks
- Log
- Container type for the results of a run
Traits§
- Solution
- A trait that allows a type to be optimized using an evolutionary algorithm.