Evolutionary
A fully extensible Rust framework for using paralyzed genetic algorithms to solve problems.
Currently, it supports coding in Binary
, Real
, Permuted Integers
, Integers
and any other coding you may want to
implement. Check out the built-in implementation for the genetic operators:
You can also code your own selection
, crossover
or mutation
implementing the traits and passing them to the
EvolutionBuilder
.
Getting Started:
First you'll need to code your Fitness function:
use *;
;
Then you will be able to build an evolution object using the EvolutionBuiler
and setting all the required parameters:
There is an extended getting started here.
Examples and Projects:
- evolutionary-examples - A project with some visual
examples of the
evolutionary
library use, implemented with the bevy game engine.
There are some examples in the examples folder:
TODO:
- Individuals:
- Tree-based chromosomes
- Selection:
- Rank Selection
- Stochastic Universal Sampling
- Parallelize the SUS Selection
- N Individuals Elitism
- Crossover:
- Real:
- Linear Crossover (LX)
- Arithmetic Crossover (AX)
- Simulated Binary Crossover (SBX)
- Real:
- Mutation:
- Real:
- Gaussian Mutation (GM)
- Permutation:
- Insertion Mutation (IM)
- Scramble Mutation (SM)
- Real:
- Usability and Performance:
- Create macro for implementing the
Individual
trait - Allow fitness to be a function and not a struct that must be implemented
- Create macro for implementing the
- Examples and Benchmark
- Implement and Optimize the Salesman problem