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}