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}