pub trait GaProblem: Send + Sync {
type Individual: Individual;
// Required method
fn evaluate(&self, individual: &mut Self::Individual);
// Provided methods
fn evaluate_parallel(&self, individuals: &mut [Self::Individual]) { ... }
fn initialize_population<R: Rng>(
&self,
size: usize,
rng: &mut R,
) -> Vec<Self::Individual> { ... }
fn on_generation(
&self,
_generation: u32,
_best: &Self::Individual,
_population: &[Self::Individual],
) { ... }
}Expand description
Trait for problem-specific GA operations.
Required Associated Types§
Sourcetype Individual: Individual
type Individual: Individual
The individual type for this problem.
Required Methods§
Sourcefn evaluate(&self, individual: &mut Self::Individual)
fn evaluate(&self, individual: &mut Self::Individual)
Evaluates the fitness of an individual.
Provided Methods§
Sourcefn evaluate_parallel(&self, individuals: &mut [Self::Individual])
fn evaluate_parallel(&self, individuals: &mut [Self::Individual])
Evaluates multiple individuals in parallel. Default implementation uses rayon for parallel evaluation.
Sourcefn initialize_population<R: Rng>(
&self,
size: usize,
rng: &mut R,
) -> Vec<Self::Individual>
fn initialize_population<R: Rng>( &self, size: usize, rng: &mut R, ) -> Vec<Self::Individual>
Creates an initial population.
Sourcefn on_generation(
&self,
_generation: u32,
_best: &Self::Individual,
_population: &[Self::Individual],
)
fn on_generation( &self, _generation: u32, _best: &Self::Individual, _population: &[Self::Individual], )
Called after each generation (for progress reporting).
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.