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

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> !RefUnwindSafe for EngineProblem<C, T>

§

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

§

impl<C, T> Freeze for EngineProblem<C, T>
where Arc<dyn Codec<C, T>>: Freeze, Option<Arc<dyn Fn(T) -> Score + Send + Sync>>: Freeze, Option<Arc<dyn Fn(&Genotype<C>) -> Score + Send + Sync>>: Freeze,

§

impl<C, T> Unpin for EngineProblem<C, T>
where Arc<dyn Codec<C, T>>: Unpin, Option<Arc<dyn Fn(T) -> Score + Send + Sync>>: Unpin, Option<Arc<dyn Fn(&Genotype<C>) -> Score + Send + Sync>>: Unpin,

§

impl<C, T> UnsafeUnpin for EngineProblem<C, T>
where Arc<dyn Codec<C, T>>: UnsafeUnpin, Option<Arc<dyn Fn(T) -> Score + Send + Sync>>: UnsafeUnpin, Option<Arc<dyn Fn(&Genotype<C>) -> Score + Send + Sync>>: UnsafeUnpin,

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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.