pub struct MembershipFunction { /* private fields */ }Implementations§
source§impl MembershipFunction
impl MembershipFunction
sourcepub fn new(name: String, kind: Kind) -> Self
pub fn new(name: String, kind: Kind) -> Self
Examples found in repository?
examples/speed_control.rs (lines 16-19)
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
fn main() {
let mut v1 = InputVariables::new("speed".to_string(), (0.0, 140.0));
v1.add_membership(MF::new(
"S".to_string(),
MFKind::Triangle(Triangle::new(-58.3, 0.0, 58.3)),
));
v1.add_membership(MF::new(
"M".to_string(),
MFKind::Triangle(Triangle::new(11.67, 70.0, 128.3)),
));
v1.add_membership(MF::new(
"L".to_string(),
MFKind::Triangle(Triangle::new(81.67, 140.0, 198.3)),
));
let mut v2 = InputVariables::new("Distance".to_string(), (0.0, 50.0));
v2.add_membership(MF::new(
"S".to_string(),
MFKind::Triangle(Triangle::new(-20.83, 0.0, 20.83)),
));
v2.add_membership(MF::new(
"M".to_string(),
MFKind::Triangle(Triangle::new(4.168, 25.0, 45.82)),
));
v2.add_membership(MF::new(
"L".to_string(),
MFKind::Triangle(Triangle::new(29.17, 50.0, 70.82)),
));
let mut o1 = OutputVariables::new(String::from("Acceleration"), (-1.0, 1.0), 100);
o1.add_membership(MembershipRange::new_gaussian(
o1.get_universe(),
"NB".to_string(),
-1.0,
0.2123,
));
o1.add_membership(MembershipRange::new_gaussian(
o1.get_universe(),
"NS".to_string(),
-0.5,
0.2123,
));
o1.add_membership(MembershipRange::new_gaussian(
o1.get_universe(),
"ZR".to_string(),
0.0,
0.2123,
));
o1.add_membership(MembershipRange::new_gaussian(
o1.get_universe(),
"PS".to_string(),
0.5,
0.2123,
));
o1.add_membership(MembershipRange::new_gaussian(
o1.get_universe(),
"PB".to_string(),
1.0,
0.2123,
));
let mut fis = MamdaniFIS::new(
SNorms::Max,
TNorms::Min,
Implications::Min,
Aggregations::Max,
Defuzzifiers::Bisection,
);
fis.add_input(v1);
fis.add_input(v2);
fis.add_output(o1);
fis.add_rule(Rule::new_and(vec![0, 0, 2], 1.0));
fis.add_rule(Rule::new_and(vec![0, 1, 3], 1.0));
fis.add_rule(Rule::new_and(vec![0, 2, 4], 1.0));
fis.add_rule(Rule::new_and(vec![1, 0, 1], 1.0));
fis.add_rule(Rule::new_and(vec![1, 1, 2], 1.0));
fis.add_rule(Rule::new_and(vec![1, 2, 3], 1.0));
fis.add_rule(Rule::new_and(vec![2, 0, 0], 1.0));
fis.add_rule(Rule::new_and(vec![2, 1, 1], 1.0));
fis.add_rule(Rule::new_and(vec![2, 2, 2], 1.0));
let output = fis.compute_outputs(vec![40.0, 43.0]);
println!("output is: {:#?}", output);
}pub fn get_name(&self) -> &String
Trait Implementations§
source§impl Clone for MembershipFunction
impl Clone for MembershipFunction
source§fn clone(&self) -> MembershipFunction
fn clone(&self) -> MembershipFunction
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moresource§impl Debug for MembershipFunction
impl Debug for MembershipFunction
source§impl GetDegree for MembershipFunction
impl GetDegree for MembershipFunction
fn get_degree(&self, x: f64) -> f64
Auto Trait Implementations§
impl Freeze for MembershipFunction
impl RefUnwindSafe for MembershipFunction
impl Send for MembershipFunction
impl Sync for MembershipFunction
impl Unpin for MembershipFunction
impl UnwindSafe for MembershipFunction
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more