use serde::{Deserialize, Serialize};
use std::num::NonZeroUsize;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct PopulationConfig {
pub size: NonZeroUsize,
pub distance_threshold: f32,
pub elitism: usize,
pub survival_threshold: f32,
pub adoption_rate: f32,
pub sexual_reproduction_chance: f32,
pub interspecies_mating_chance: f32,
pub stagnation_threshold: NonZeroUsize,
pub stagnation_penalty: f32,
}
impl PopulationConfig {
pub const fn zero() -> PopulationConfig {
PopulationConfig {
size: unsafe { NonZeroUsize::new_unchecked(1) },
distance_threshold: 0.0,
elitism: 0,
survival_threshold: 0.0,
adoption_rate: 0.0,
sexual_reproduction_chance: 0.0,
interspecies_mating_chance: 0.0,
stagnation_threshold: unsafe { NonZeroUsize::new_unchecked(1) },
stagnation_penalty: 0.0,
}
}
}