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.
Uses mutable evaluation: evaluate(&mut Individual) can set both
fitness and auxiliary state on the individual.
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 (mutable — can set auxiliary state).
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 when the parallel feature is enabled.
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".