Skip to main content

radiate_alters/mutators/
uniform.rs

1use radiate_core::{Chromosome, Mutate, Rate};
2
3/// The [UniformMutator] is a simple mutator that applies uniform mutation to genes in a [Chromosome].
4///
5/// This mutator is essentially the 'default' mutator and is a good starting point for most problems.
6#[derive(Debug, Clone)]
7pub struct UniformMutator {
8    pub rate: Rate,
9}
10
11impl UniformMutator {
12    pub fn new(rate: impl Into<Rate>) -> Self {
13        let rate = rate.into();
14        UniformMutator { rate }
15    }
16}
17
18impl<C: Chromosome> Mutate<C> for UniformMutator {
19    fn rate(&self) -> Rate {
20        self.rate.clone()
21    }
22}