pub struct EvolutionBuilder<T: Individual> { /* private fields */ }Expand description
This is the helper struct to create a new Evolution object. The fitness, selection,
crossover, mutation and stop_condition are required.
§Example
fn main() {
let mut evolution = EvolutionBuilder::new(30, 10, GeneCod::Bin, ())
.with_fitness(YourFitness)
.with_selection(TournamentSelection::default())
.with_crossover(NPointsCrossover::default())
.with_mutation(BitFlipMutation::default())
.with_title("Max".to_string())
.with_stop_condition(move |_, iterations, _| iterations >= 1000)
.build().unwrap();
}Implementations§
Source§impl<T: Individual> EvolutionBuilder<T>
impl<T: Individual> EvolutionBuilder<T>
pub fn new( population_size: u32, dimension: u32, gene_cod: GeneCod, range: T::RangeType, ) -> Self
Sourcepub fn from_config(config: EvolutionConfig<T>) -> Self
pub fn from_config(config: EvolutionConfig<T>) -> Self
Helper method to create a new EvolutionBuilder from a EvolutionConfig.
Sourcepub fn with_fitness<F: Fitness<T>>(self, f: F) -> Self
pub fn with_fitness<F: Fitness<T>>(self, f: F) -> Self
Sets the fitness function. Receives a struct that implements the Fitness trait.
Sourcepub fn with_selection<S: Selection<T>>(self, s: S) -> Self
pub fn with_selection<S: Selection<T>>(self, s: S) -> Self
Sets the selection operator. Receives a struct that implements the Selection trait.
Sourcepub fn with_crossover<X: Crossover<T>>(self, c: X) -> Self
pub fn with_crossover<X: Crossover<T>>(self, c: X) -> Self
Sets the crossover operator. Receives a struct that implements the Crossover trait.
Sourcepub fn with_mutation<M: Mutation<T>>(self, m: M) -> Self
pub fn with_mutation<M: Mutation<T>>(self, m: M) -> Self
Sets the mutation operator. Receives a struct that implements the Mutation trait.
Sourcepub fn with_stop_condition<F: Fn(f64, u32, u32) -> bool + 'static + Send + Sync>(
self,
f: F,
) -> Self
pub fn with_stop_condition<F: Fn(f64, u32, u32) -> bool + 'static + Send + Sync>( self, f: F, ) -> Self
Sets the stop condition. Receives a closure that receives the best fitness, the current iteration and the number of generations without improvement and returns a boolean.
§Example
evolution_builder.with_stop_condition(|_, iterations, _| iterations >= 1000)Sourcepub fn with_elitism(self, elitism: u32) -> Self
pub fn with_elitism(self, elitism: u32) -> Self
Number of elitist population members to ensure that keeps in the pool. Default is 1.
Sourcepub fn with_title(self, title: String) -> Self
pub fn with_title(self, title: String) -> Self
Sets the title of the evolution to use when plotting. Defaults to "".
pub fn build(&self) -> Result<Evolution<T>, String>
Auto Trait Implementations§
impl<T> Freeze for EvolutionBuilder<T>
impl<T> !RefUnwindSafe for EvolutionBuilder<T>
impl<T> Send for EvolutionBuilder<T>
impl<T> Sync for EvolutionBuilder<T>
impl<T> Unpin for EvolutionBuilder<T>
impl<T> !UnwindSafe for EvolutionBuilder<T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more