genetic_algorithm::strategy::evolve

Struct EvolveReporterSimple

Source
pub struct EvolveReporterSimple<G: EvolveGenotype> {
    pub buffer: Option<Vec<u8>>,
    pub period: usize,
    pub show_genes: bool,
    pub show_equal_fitness: bool,
    pub show_mutate_event: bool,
    pub show_extension_event: bool,
    /* private fields */
}
Expand description

A Simple Evolve Reporter generic over Genotype. A report is triggered every period generations

Example output:

enter - evolve, iteration: 0
new best - generation: 0,  fitness_score: Some(-3112), scale_index: None, genes: None
new best - generation: 6,  fitness_score: Some(-2012), scale_index: None, genes: None
new best - generation: 38, fitness_score: Some(-1440), scale_index: None, genes: None
new best - generation: 47, fitness_score: Some(-1439), scale_index: None, genes: None
periodic - current_generation: 50, stale_generations: 2, best_generation: 47, scale_index: None, population_cardinality: Some(6), selected_population_size: 800, #extension_events: 0
new best - generation: 51, fitness_score: Some(-1437), scale_index: None, genes: None
new best - generation: 60, fitness_score: Some(-1435), scale_index: None, genes: None
new best - generation: 77, fitness_score: Some(-1120), scale_index: None, genes: None
new best - generation: 99, fitness_score: Some(-639),  scale_index: None, genes: None
periodic - current_generation: 100, stale_generations: 0, best_generation: 99, scale_index: None, population_cardinality: Some(11), selected_population_size: 800, #extension_events: 1
new best - generation: 146, fitness_score: Some(-125), scale_index: None, genes: None
periodic - current_generation: 150, stale_generations: 3,   best_generation: 146, scale_index: None, population_cardinality: Some(59),  selected_population_size: 800, #extension_events: 1
periodic - current_generation: 200, stale_generations: 53,  best_generation: 146, scale_index: None, population_cardinality: Some(592), selected_population_size: 800, #extension_events: 3
periodic - current_generation: 250, stale_generations: 103, best_generation: 146, scale_index: None, population_cardinality: Some(4),   selected_population_size: 800, #extension_events: 2
periodic - current_generation: 300, stale_generations: 153, best_generation: 146, scale_index: None, population_cardinality: Some(335), selected_population_size: 800, #extension_events: 3
periodic - current_generation: 350, stale_generations: 203, best_generation: 146, scale_index: None, population_cardinality: Some(1),   selected_population_size: 800, #extension_events: 2
new best - generation: 379, fitness_score: Some(66), scale_index: None, genes: None
periodic - current_generation: 400, stale_generations: 20,  best_generation: 379, scale_index: None, population_cardinality: Some(570), selected_population_size: 800, #extension_events: 3
periodic - current_generation: 450, stale_generations: 70,  best_generation: 379, scale_index: None, population_cardinality: Some(5),   selected_population_size: 800, #extension_events: 2
periodic - current_generation: 500, stale_generations: 120, best_generation: 379, scale_index: None, population_cardinality: Some(368), selected_population_size: 800, #extension_events: 3
periodic - current_generation: 550, stale_generations: 170, best_generation: 379, scale_index: None, population_cardinality: Some(692), selected_population_size: 800, #extension_events: 3
periodic - current_generation: 600, stale_generations: 220, best_generation: 379, scale_index: None, population_cardinality: Some(75),  selected_population_size: 800, #extension_events: 2
exit - evolve, iteration: 0
  SetupAndCleanup: 141.833µs
  Extension: 2.139ms
  Select: 11.807ms
  Crossover: 16.921ms
  Mutate: 4.337ms
  Fitness: 231.512ms
  UpdateBestChromosome: 1.497ms
  Other: 6.050ms
  Total: 274.404ms (84% fitness)

Fields§

§buffer: Option<Vec<u8>>§period: usize§show_genes: bool§show_equal_fitness: bool§show_mutate_event: bool§show_extension_event: bool

Implementations§

Source§

impl<G: EvolveGenotype> Simple<G>

Source

pub fn new(period: usize) -> Self

Source

pub fn new_with_buffer(period: usize) -> Self

Source

pub fn new_with_flags( period: usize, buffered: bool, show_genes: bool, show_equal_fitness: bool, show_mutate_event: bool, show_extension_event: bool, ) -> Self

Trait Implementations§

Source§

impl<G: Clone + EvolveGenotype> Clone for Simple<G>

Source§

fn clone(&self) -> Simple<G>

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<G: EvolveGenotype> Default for Simple<G>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<G: EvolveGenotype> StrategyReporter for Simple<G>

Source§

fn on_new_generation<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, _genotype: &Self::Genotype, state: &S, _config: &C, )

Is triggered after selection

Source§

type Genotype = G

Source§

fn flush(&mut self, output: &mut Vec<u8>)

Source§

fn on_enter<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, genotype: &Self::Genotype, state: &S, config: &C, )

Source§

fn on_exit<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, _genotype: &Self::Genotype, state: &S, config: &C, )

Source§

fn on_new_best_chromosome<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, genotype: &Self::Genotype, state: &S, _config: &C, )

Source§

fn on_new_best_chromosome_equal_fitness<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, genotype: &Self::Genotype, state: &S, _config: &C, )

Source§

fn on_extension_event<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, event: ExtensionEvent, _genotype: &Self::Genotype, state: &S, _config: &C, )

Source§

fn on_mutate_event<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, event: MutateEvent, _genotype: &Self::Genotype, state: &S, _config: &C, )

Source§

fn on_start<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, _genotype: &Self::Genotype, _state: &S, _config: &C, )

Source§

fn on_finish<S: StrategyState<Self::Genotype>, C: StrategyConfig>( &mut self, _genotype: &Self::Genotype, _state: &S, _config: &C, )

Auto Trait Implementations§

§

impl<G> Freeze for Simple<G>

§

impl<G> RefUnwindSafe for Simple<G>
where G: RefUnwindSafe,

§

impl<G> Send for Simple<G>

§

impl<G> Sync for Simple<G>

§

impl<G> Unpin for Simple<G>
where G: Unpin,

§

impl<G> UnwindSafe for Simple<G>
where G: UnwindSafe,

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. 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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V