module Huzzy.TypeOne.Systems
( FRule(..)
, Defuzzifier(..)
) where
import Huzzy.Base.Sets
import Huzzy.Base.Systems
import Huzzy.TypeOne.Sets
instance FRule (T1Set a) where
type Antecedent (T1Set a) = Double
(=*>) a t1s = t1s { mf = a =*> (mf t1s)}
(=|>) a t1s = t1s { mf = a =|> (mf t1s)}
weight t1s b = t1s {mf = (mf t1s) `weight` b}
instance Defuzzifier (T1Set Double) where
type Result (T1Set Double) = Double
centroid t1s = sum (zipWith (*) dom' fdom) / sum fdom
where
dom' = dom t1s
(MF f) = mf t1s
fdom = map f dom'