Skip to main content

EngineProblem

Struct EngineProblem 

Source
pub struct EngineProblem<C, T>
where C: Chromosome,
{ pub objective: Objective, pub codec: Arc<dyn Codec<C, T>>, pub fitness_fn: Option<Arc<dyn Fn(T) -> Score + Send + Sync>>, pub raw_fitness_fn: Option<Arc<dyn Fn(&Genotype<C>) -> Score + Send + Sync>>, }
Expand description

A standard implementation of the Problem trait for general use. EngineProblem is a generic, base level concrete implementation of the Problem trait that is the default problem used by the engine if none other is specified during building.

We take the Codec and the fitness function from the user and simply wrap them into this struct.

§Generic Parameters

  • C: The Chromosome type that represents the genetic material
  • T: The phenotype type that represents the decoded individual

§Examples

use radiate_core::*;
use std::sync::Arc;

// Create a simple fitness function
let fitness_fn = Arc::new(|phenotype: Vec<f32>| {
    Score::from(phenotype.iter().cloned().fold(0.0, f32::max))
});

let problem = EngineProblem {
    objective: Objective::Single(Optimize::Maximize),
    codec: Arc::new(FloatCodec::vector(5, 0.0..1.0)),
    fitness_fn: Some(fitness_fn),
    raw_fitness_fn: None,
};

Fields§

§objective: Objective§codec: Arc<dyn Codec<C, T>>§fitness_fn: Option<Arc<dyn Fn(T) -> Score + Send + Sync>>§raw_fitness_fn: Option<Arc<dyn Fn(&Genotype<C>) -> Score + Send + Sync>>

Trait Implementations§

Source§

impl<C: Chromosome, T> Problem<C, T> for EngineProblem<C, T>

Implementation of Problem for EngineProblem.

This implementation delegates to the contained codec and fitness function, providing a clean separation of concerns between encoding/decoding logic and fitness evaluation.

Source§

fn encode(&self) -> Genotype<C>

Creates a new Genotype representing the initial state of the problem. The returned Genotype should represent a valid starting point for evolution. Read more
Source§

fn decode(&self, genotype: &Genotype<C>) -> T

Converts a Genotype into its corresponding phenotype. Read more
Source§

fn eval(&self, individual: &Genotype<C>) -> RadiateResult<Score>

Evaluates the fitness of a single individual. Read more
Source§

fn eval_batch( &self, individuals: &[Genotype<C>], ) -> Result<Vec<Score>, RadiateError>

Evaluates the fitness of multiple individuals in a batch. Read more
Source§

impl<C: Chromosome, T> Send for EngineProblem<C, T>

Mark EngineProblem as thread-safe for parallel execution.

This implementation is safe because:

  • Arc<dyn Codec<C, T>> is Send + Sync when C and T are Send + Sync
  • Arc<dyn Fn(T) -> Score + Send + Sync> is Send + Sync by construction
  • The struct contains no interior mutability
Source§

impl<C: Chromosome, T> Sync for EngineProblem<C, T>

Auto Trait Implementations§

§

impl<C, T> Freeze for EngineProblem<C, T>

§

impl<C, T> !RefUnwindSafe for EngineProblem<C, T>

§

impl<C, T> Unpin for EngineProblem<C, T>

§

impl<C, T> UnsafeUnpin for EngineProblem<C, T>

§

impl<C, T> !UnwindSafe for EngineProblem<C, T>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.