radiate_rust/engines/
optimize.rs1use super::genome::{genes::gene::Gene, population::Population};
2
3#[derive(Clone, Copy, Debug, PartialEq)]
4pub enum Optimize {
5 Minimize,
6 Maximize,
7}
8
9impl Optimize {
10 pub fn sort<G, A>(&self, population: &mut Population<G, A>)
11 where
12 G: Gene<G, A>
13 {
14 match self {
15 Optimize::Minimize => population.sort_by(|a, b| a.partial_cmp(&b).unwrap()),
16 Optimize::Maximize => population.sort_by(|a, b| b.partial_cmp(&a).unwrap()),
17 }
18 }
19
20 pub fn is_better<T>(&self, a: &T, b: &T) -> bool
21 where
22 T: PartialOrd
23 {
24 match self {
25 Optimize::Minimize => a < b,
26 Optimize::Maximize => a > b,
27 }
28 }
29}