FIS structure

The FIS handled by the function library are MIMO type FIS, Multiple Input Multiple Output. The FIS is built by using the information of the configuration file. The basic module contains two main functions, defined within the FIS class: Infer and Performance.


The Infer function infers a value for each active output from the input values. Fuzzy inference obeys the following steps:

  1. Fuzzification: done within the INPUT class. For a given input value, the GetDegs function fills the Mfdeg array with the membership values to each input fuzzy set. This array is public.

  2. Inference: Each rule conclusion is weighted with the item matching degree for the rule. The rules have the following structure (for a two input one output FIS):

    IF Input 1 is MF 2 AND Input 2 is MF 1 THEN Output 1 is Value 1

    (crisp output)

    IF Input 1 is MF 1 AND Input 2 is MF 1 THEN Output 1 is MF 2

    (fuzzy output)


    The ExecRule function of the RULE class calculates the matching degree of the item to the rule, also called rule weight. The calculation is done within the PREMISE class. It uses a conjunction operator between the fuzzy sets in the rule premises for the input variables (Input 1 and Input 2). These fuzzy sets are described by the number 2 and number 1 membership functions for the first rule, 1 and 1 membership functions for the second one). The PREMISE class includes a pointer on the input variable array, which gives it access to the Mfdeg field for each input. The rule matching degree is stored in the public variable Weight within the RULE class. When expert weigts are set (see section FIS menu- Rule window), the rule matching degree is multiplied by the expert weight.

  3. Inferred value computation: This computation is handled by FISOUT class. It consists of two main steps.


Implication operators

For implicative outputs, three implication operators are available :

The inference result is a possibility distribution, which may be defuzzified. In the current implementation, no choice is available for the defuzzification operator. The default one is the Mean of maxima, which corresponds to the middle of the distribution kernel.