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§
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, )
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.