Struct genetic_algorithm::crossover::CrossoverMultiGene
source · pub struct CrossoverMultiGene {
pub number_of_crossovers: usize,
pub allow_duplicates: bool,
}Expand description
Crossover multiple genes between the parents. The gene positions are chosen with uniform probability. Choose between allowing duplicate crossovers of the same gene or not (~2x slower). The population is restored towards the target_population_size by keeping the best parents alive. Excess parents are dropped.
Not allowed for UniqueGenotype and MultiUniqueGenotype as it would not preserve the gene uniqueness in the children.
Fields§
§number_of_crossovers: usize§allow_duplicates: boolImplementations§
Trait Implementations§
source§impl Crossover for MultiGene
impl Crossover for MultiGene
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 prepare_population<G: Genotype>(
&mut self,
state: &mut EvolveState<G>,
config: &EvolveConfig,
) -> usize
fn prepare_population<G: Genotype>( &mut self, state: &mut EvolveState<G>, config: &EvolveConfig, ) -> usize
The population is restored towards the target_population_size by keeping the best parents
alive. Excess parents are dropped. The number of crossovers to execute from the front of
the population is returned
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 MultiGene
impl RefUnwindSafe for MultiGene
impl Send for MultiGene
impl Sync for MultiGene
impl Unpin for MultiGene
impl UnwindSafe for MultiGene
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