evolutionary/crossover/
uniform_crossover.rs

1// The Uniform Crossover works for Binary, Integer and Reals but not for Permuted Integers,
2// so the implementations are in each module.
3
4/// # Uniform Crossover
5///
6/// For each gene, it selects whether to swap them between the parents based on the `toss_probability`.
7#[derive(Clone)]
8pub struct UniformCrossover {
9    /// The probability of crossover occurring.
10    pub crossover_rate: f64,
11    /// The probability of swapping the genes.
12    pub toss_probability: f64,
13}
14
15impl Default for UniformCrossover {
16    fn default() -> Self {
17        UniformCrossover {
18            crossover_rate: 0.8,
19            toss_probability: 0.5,
20        }
21    }
22}