Introduction to the FIS file format

 

The Fuzzy block in RecurDyn/CoLink loads the FIS file and executes the Fuzzy logic controller defined in the FIS file. The FIS file can be created either by using MATLAB® or by using a simple text-editor. In this section, the FIS file format is explained so that the user can create a FIS file using any text-editor application.

The FIS file format in RecurDyn/CoLink adopts the fuzzy file format used in Fuzzy Logic Toolbox in MATLAB® package. If the user is familiar with the FIS file format used in the Fuzzy logic controller in MATLAB® package, the user can skip this section.

 

     FIS file format

File extension of the FIS file is '-.fis'.

The FIS file contains all the necessary information to describe the Fuzzy logic controller and it includes:

 

    Type of Fuzzy logic

    Control inputs including input Fuzzy membership functions

    Control outputs including output Fuzzy membership functions

    Fuzzy rules

    Types of Fuzzy operation method

 

     A FIS file consists of 4 sections

    Fuzzy system information ( [system])

This section needs to start with section indicator, [System], at the beginning of the section. In this section, the overall properties of the fuzzy logic controller are defined.

 

Name: Name of the Fuzzy controller system. A string value. Write the values between single-quotation marks (' ').

Syntax: Name=‘name_of_the_fuzzy_controller’

 

Type: Type of fuzzy interference method to be used. A string value. Either 'mamdani' or 'sugeno'.

Syntax: Type = ‘mamdani’ OR Type= ‘sugeno’

 

NumInputs: Number of inputs. An integer number.

Syntax: NumInputs = an_integer

 

NumOutputs: Number of outpus. An integer number.

Syntax: NumOutputs = an_integer

 

NumRules: Number of fuzzy rules to be defined and used. An integer number.

Syntax: NumRules = an_integer

 

AndMethod: The method to be used for AND operation. A string value. Either 'min' or 'prod'.

Syntax: AndMethod = ‘min’ OR AndMethod= ‘prod’

 

OrMethod: The method to be used for OR operation. a string value. Either 'max' or 'probor'.

Syntax: OrMethod = ‘max’ OR OrMethod = ‘probor’

 

ImpMethod: Implementation method: a string value. Either 'min' or 'prod'

Syntax: ImpMethod = ‘min’ OR ImpMethod = ‘prod’

 

AggMethod: Aggregation method: a string value. Either 'max' or 'sum' or 'probor'.

Syntax: AggMethod = ‘max’ OR AggMethod = ‘sum’ OR AggMethod='probor'

 

DefuzzMethod: Defuzzification method: a string value. It depends on Fuzzy type.

Mamdani type: 'centroid', 'bisector', 'mom', 'som', or 'lom'.

 

Sugeno type: 'wtaver', or 'wtsum'.

Syntax: ImpMethod = ‘defuzzification_type_name’

 

    Inputs

This section needs to start with section indicator, [Input#], at the beginning of the section, where # represents the number of input. There can be multiple inputs and each input definition needs to start with [Input#] (Please refer to the example listed at the end).

Name: Name of the input. A string value. Write the values between quotation marks (' '). ∙ Syntax: Name= ‘name_of_the_input’

Syntax: Name= ‘name_of_the_input’

 

Range of x values: Range of input value. Write the minimum value and maximum value between '[' and ']'

Syntax: Range=[minimum_value maximum_value]

 

NumMFs: Number of Input Member functions (MFs)

Syntax : NumMFs= an_integer

 

MF #: Member Function properties

Syntax:MF1=‘member_function_name’:‘member_function_type’,[parameter_1 parameter_2 … parameter_n ]

 

Member Function Types available (for details refer to the following section)

'dsigmf' : requires 4 parameters.

'gauss2mf' : requires 4 parameters.

'gaussmf' : requires 2 parameters.

'gbellmf' : requires 3 parameters.

'pimf' : requires 4 parameters.

'psigmf' : requires 4 parameters.

'sigmf' : requires 2 parameters.

'smf' : requires 2 parameters.

'trapmf' : requires 4 parameters.

'trimf' : requires 3 parameters.

'zmf' : 2 parameters.

 

Member Function parameters

Each member function requires some parameters to completely define the member function. The number of parameters is 4 or less.

 

    Outputs

This section needs to start with section indicator, [Output#], at the beginning of the section, where # represents the number of input. There can be multiple inputs and each input definition needs to start with [Output #] (Please refer to the example listed at the end).

Name: Name of the input. a string value. Write the values between quotation marks (' ').

Syntax: Name= ‘name_of_the_input’

 

Range: Range of output value. Write the minimum value and maximum value between '[' and ']'

Syntax: Range=[minimum_value maximum_value]

 

NumMFs: Number of Input Member functions (MFs)

Syntax: NumMFs= an_integer

 

MF #: Member Function properties

Syntax: MF1=‘member_function_name’:‘member_function_type’, [parameter_1 parameter_2 … parameter_n ]

 

Member Function Types available for ‘Mamadani’

'dsigmf': requires 4 parameters.

'gauss2mf': requires 4 parameters.

'gaussmf': requires 2 parameters.

'gbellmf': requires 3 parameters.

'pimf': requires 4 parameters.

'psigmf': requires 4 parameters.

'sigmf': requires 2 parameters.

'smf': requires 2 parameters.

'trapmf': requires 4 parameters.

'trimf': requires 3 parameters.

'zmf': nrequires 2 parameters.

 

Member Function Types available for ‘Sugeno’

'linear': requires 2 (‘number of inputs’ + 1) parameters

'constant’: requires (‘number of inputs’ + 1) parameters

 

    Rules

This section needs to start with section indicator, [Rules], at the beginning of the section. The IF-THEN rules defined in this section are used to formulate the conditional statements that are required by fuzzy logic. There can be multiple IF-THEN rules. Each rule consists of four parts: Inputs, Outputs, Rule Weighting, and Operation type. Each rule should start in a new line.

 

Syntax: MF#_of_Input1 MF#_of_Input2 … MF#_of_Input#, MF#_of_Output1 …

MF#_of_Input: indicates the index number of the input member function to be used in the rule.

An integer. Any negative value means 'NOT' operation. (Mathematical definition of 'Not' operation is 1 minus by a variable.)

MF#_of_Output: indicates the index number of the output member function to be used in the rule. An integer. Any negative value means 'NOT' operation. (Mathematical definition of 'Not' operation is 1 minus by a variable.)

Rule_Weighting: Rule weighting value. A real number between 0 and 1 (including 0 and 1).

Operation Type: Logic operation type. 1 means 'AND' operation in that rule. 2 means 'OR' operation.

Example

[Rules]

1 -3, 2 (1): 2

This rule means 'IF MF1 of Input1 OR Not MF3 of Input2, THEN MF2 of Output1, weight is 1'

 

     FIS Example 

For an example 'tipper.fis' file in MATLAB® Fuzzy demo is listed below.

 

01: % $Revision: 1.1 $

02: [System]

03: Name='tipper'

04: Type='mamdani'

05: NumInputs=2

06: NumOutputs=1

07: NumRules=3

08: AndMethod='min'

09: OrMethod='max'

10: ImpMethod='min'

11: AggMethod='max'

12: DefuzzMethod='centroid'

13:

14: [Input1]

15: Name='service'

16: Range=[0 10]

17: NumMFs=3

18: MF1='poor':'gaussmf',[1.5 0]

19: MF2='good':'gaussmf',[1.5 5]

20: MF3='excellent':'gaussmf',[1.5 10]

21:

22: [Input2]

23: Name='food'

24: Range=[0 10]

25: NumMFs=2

26: MF1='rancid':'trapmf',[0 0 1 3]

27: MF2='delicious':'trapmf',[7 9 10 10]

28:

29: [Output1]

30: Name='tip'

31: Range=[0 30]

32: NumMFs=3

33: MF1='cheap':'trimf',[0 5 10]

34: MF2='average':'trimf',[10 15 20]

35: MF3='generous':'trimf',[20 25 30]

36:

37: [Rules]

38: 1 1, 1 (1) : 2

39: 2 0, 2 (1) : 1

40: 3 2, 3 (1) : 2