Struct genetic_algorithm::crossover::CrossoverUniform
source · pub struct CrossoverUniform {
pub parent_survival_rate: f32,
}Expand description
Crossover with 50% probability for each gene to come from one of the two parents. Optionally keep a percentage of the parents around to compete with children later on.
Actually implemented as CrossoverMultiGene::new(<genes_size> / 2, allow_duplicates=true, parent_survival_rate)
Not allowed for UniqueGenotype and MultiUniqueGenotype as it would not preserve the gene uniqueness in the children.
Fields§
§parent_survival_rate: f32Implementations§
Trait Implementations§
source§impl Crossover for Uniform
impl Crossover for Uniform
fn call<G: Genotype, R: Rng, SR: EvolveReporter<Genotype = G>>( &mut self, genotype: &G, state: &mut EvolveState<G>, _config: &EvolveConfig, _reporter: &mut SR, rng: &mut R, )
source§fn require_crossover_indexes(&self) -> bool
fn require_crossover_indexes(&self) -> bool
to guard against invalid Crossover strategies which break the internal consistency
of the genes, unique genotypes can’t simply exchange genes without gene duplication issues
source§fn require_crossover_points(&self) -> bool
fn require_crossover_points(&self) -> bool
to guard against invalid Crossover strategies which break the internal consistency
of the genes, unique genotypes can’t simply exchange genes without gene duplication issues
Auto Trait Implementations§
impl Freeze for Uniform
impl RefUnwindSafe for Uniform
impl Send for Uniform
impl Sync for Uniform
impl Unpin for Uniform
impl UnwindSafe for Uniform
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit)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>
Converts
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>
Converts
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