fuzzy_logic_rs/
implications.rs1#[derive(Debug)]
2pub enum Implications {
3 Min,
4 Product,
5 Custom(fn(f64, &Vec<f64>) -> Vec<f64>),
6}
7
8impl Implications {
9 pub fn implication(&self, mu: f64, vec: &Vec<f64>) -> Vec<f64> {
10 match self {
11 Self::Min => min_implication(mu, &vec),
12 Self::Product => product_implication(mu, &vec),
13 Self::Custom(func) => func(mu, &vec),
14 }
15 }
16}
17
18pub fn min_implication(mu: f64, vec: &Vec<f64>) -> Vec<f64> {
19 vec.iter().map(|e| e.min(mu)).collect()
20}
21
22pub fn product_implication(mu: f64, vec: &Vec<f64>) -> Vec<f64> {
23 vec.iter().map(|e| e * mu).collect()
24}