Crate eviolite

Source
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
crossoverndarray
Commonly used crossover operators for ndarrays
fitness
Representation and evaluation of fitness values
hof
Keeping track of the best solutions across generations
mutationndarray
Commonly used mutation operators for ndarrays
prelude
Convenience re-export of commonly used items
repro_rng
Reproducible and globally seedable version of rand’s thread_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.