Skip to main content

Fitness

Trait Fitness 

Source
pub trait Fitness: Send + Sync {
    type Genome: EvolutionaryGenome;
    type Value: FitnessValue;

    // Required method
    fn evaluate(&self, genome: &Self::Genome) -> Self::Value;

    // Provided methods
    fn as_log_likelihood(&self, genome: &Self::Genome, temperature: f64) -> f64 { ... }
    fn gradient(&self, _genome: &Self::Genome) -> Option<Vec<f64>> { ... }
}
Expand description

Fitness evaluation trait

Defines how to evaluate the fitness of a genome.

Required Associated Types§

Source

type Genome: EvolutionaryGenome

The genome type being evaluated

Source

type Value: FitnessValue

The fitness value type

Required Methods§

Source

fn evaluate(&self, genome: &Self::Genome) -> Self::Value

Evaluate fitness (higher = better by convention)

Provided Methods§

Source

fn as_log_likelihood(&self, genome: &Self::Genome, temperature: f64) -> f64

Convert fitness to log-likelihood for probabilistic selection

Uses Boltzmann distribution: P(x) ∝ exp(f(x) / T)

Source

fn gradient(&self, _genome: &Self::Genome) -> Option<Vec<f64>>

Optional: Provide gradient for gradient-assisted mutation

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Fitness for Ackley

Source§

impl Fitness for DixonPrice

Source§

impl Fitness for Griewank

Source§

impl Fitness for LeadingOnes

Source§

impl Fitness for Levy

Source§

impl Fitness for NkLandscape

Source§

impl Fitness for OneMax

Source§

impl Fitness for Rastrigin

Source§

impl Fitness for Rosenbrock

Source§

impl Fitness for RoyalRoad

Source§

impl Fitness for Schwefel

Source§

impl Fitness for Sphere

Source§

impl Fitness for StyblinskiTang

Source§

impl<F: Fitness<Value = f64>> Fitness for MinimizeFitness<F>

Source§

impl<F> Fitness for MemoizedFitness<F>
where F: Fitness<Value = f64>, F::Genome: Serialize,

Source§

impl<G, F, V> Fitness for FnFitness<G, F, V>
where G: EvolutionaryGenome, F: Fn(&G) -> V + Send + Sync, V: FitnessValue,

Source§

type Genome = G

Source§

type Value = V