This module offers strucures and methods needed for the implementation of Fuzzy Logic and Fuzzy Control systems. The base classes implementing fuzzy sets are FuzzySet and NDimFS, which model one and n-dimensional fuzzy sets, respectively. Several different types of fuzzy sets are already implemented. There is possibility to define additional fuzzy sets by combining two fuzzy sets (see: ComposedFS and ComposedNDimFS) or by direct definition of membership function and support by the user is given (see CustomizedFS).
The concepts of a linguist variable, like befuddlement, and the associated linguistic terms, like drunken or sober, are implemented in the classes LinguisticVariable and LinguisticTerm. For every subclass of FuzzySet there's a corresponding subclass of linguistic term, for instance BellFS and BellLT (a linguistic term is basically a named fuzzy set).
Fuzzy if-then rules can either be of the canonical type Rule (with a fuzzy set on the RHS) or a SugenoRule. Different inference machines (namely the MamdaniIM and SugenoIM) are available as implementation of the general interface InferenceMachine. The class CustomIM provides an inference method that can be defined by the user. In this context the class Implication (and its base class FuzzyRelation) are needed. The RuleBase on which the inference machine works can either be build manually or read from a XML-file (see: RuleBaseGenerator.h).