use std::time::Duration;
use crate::genetic::chromosome::Chromosome;
pub struct GeneticSolution<C>
where
C: Chromosome,
{
chromosomes: Vec<C>,
generations: u64,
mutations: u64,
runtime: Duration,
}
impl<C> GeneticSolution<C>
where
C: Chromosome,
{
pub fn new(chromosomes: Vec<C>, generations: u64, mutations: u64, runtime: Duration) -> Self {
GeneticSolution {
chromosomes,
generations,
mutations,
runtime,
}
}
#[inline]
pub fn fittest(&self) -> &C {
&self.chromosomes[0]
}
pub fn chromosomes(&self) -> &[C] {
&self.chromosomes
}
#[inline]
pub fn generations(&self) -> u64 {
self.generations
}
#[inline]
pub fn mutations(&self) -> u64 {
self.mutations
}
#[inline]
pub fn runtime(&self) -> Duration {
self.runtime
}
}