Skip to main content

Core

Trait Core 

Source
pub trait Core {
    type Individual: Ord + Clone + Send + Sync + Serialize + DeserializeOwned;
    type ProgramParameters: Copy + Send + Sync + Clone + Serialize + DeserializeOwned + Args;
    type State: State + Clone + Send + Sync;
    type FitnessMarker;
    type Generate: Generate<Self::ProgramParameters, Self::Individual> + Generate<(), Self::State>;
    type Fitness: Fitness<Self::Individual, Self::State, Self::FitnessMarker>;
    type Reset: Reset<Self::Individual> + Reset<Self::State>;
    type Breed: Breed<Self::Individual>;
    type Mutate: Mutate<Self::ProgramParameters, Self::Individual>;
    type Status: Status<Self::Individual>;
    type Freeze: Freeze<Self::Individual>;

    // Provided methods
    fn init_population(
        program_parameters: Self::ProgramParameters,
        population_size: usize,
    ) -> Vec<Self::Individual> { ... }
    fn eval_fitness(
        population: &mut Vec<Self::Individual>,
        trials: &[Self::State],
        default_fitness: f64,
    ) { ... }
    fn rank(population: &mut Vec<Self::Individual>) { ... }
    fn survive(population: &mut Vec<Self::Individual>, gap: f64) { ... }
    fn variation(
        population: &mut Vec<Self::Individual>,
        crossover_percent: f64,
        mutation_percent: f64,
        program_parameters: Self::ProgramParameters,
    ) { ... }
}

Required Associated Types§

Provided Methods§

Source

fn init_population( program_parameters: Self::ProgramParameters, population_size: usize, ) -> Vec<Self::Individual>

Source

fn eval_fitness( population: &mut Vec<Self::Individual>, trials: &[Self::State], default_fitness: f64, )

Source

fn rank(population: &mut Vec<Self::Individual>)

Source

fn survive(population: &mut Vec<Self::Individual>, gap: f64)

Source

fn variation( population: &mut Vec<Self::Individual>, crossover_percent: f64, mutation_percent: f64, program_parameters: Self::ProgramParameters, )

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§