fls_structure - Scilab Fuzzy Logic System Structure

Description

Any fls (fuzzy logic system) used with this toolbox was structured in a t-list , and this structure is over-loaded to help user manipulation.

Structure

The general part have the following structure:

  • fls.name : string, the internal tag-name.
  • fls.comment : string, user's comment.
  • fls.type : string, 'ts' for Takagi-Sugeno, 'm' for Mamdani.
  • fls.SNorm : string, the S-Norm class type. 'dubois' for Dubois-Prade, 'yager' for Yager, 'dsum' for drastic sum, 'esum' for Einstein sum, 'asum' for algebraic sum, 'max' for maximum.
  • fls.SNormPar : scalar, S-Norm class parameter. This parameter is required if S-Norm class is 'dubois' or 'yager' .
  • fls.TNorm : string, the T-Norm class type. 'dubois' for Dubois-Prade, 'yager' for Yager, 'dprod' for drastic product, 'eprod' for Einstein product, 'aprod' for algebraic product, 'min' for minimum.
  • fls.TNormPar : scalar, T-Norm class parameter.This parameter is required if T-Norm class is 'dubois' or 'yager' .
  • fls.Comp : string, Complement class type. 'one' for classical complement, 'yager' for yager, 'sugeno' for sugeno.
  • fls.CompPar : scalar, Complement class parameter.This parameter is required if Complement class is 'yager' or 'sugeno' .
  • fls.ImpMethod : string, implication method. 'min' for minimum or 'prod' for product.
  • fls.AggMethod : string, aggregation method. 'max' for maximum, 'sum' for sum, 'probor' for probabilistic or.
  • fls.defuzzMethod : string, defuzzification method. 'centroide' for centroide, 'bisector' for bisector, 'mom' for mean of maximum, 'som' for shortest of maximum, 'lom' for largest of maximum, 'waver' for weigthed average, 'wsum' for weigthed sum.
  • The inputs have the following structure:

  • fls.input(j).name : string, the tag-name of the j-input variable
  • fls.input(j).range : real row vector in the form [minDom, maxDom] , where minDom means the minimum value of the j-input, and, maxDom means the maximum value of the j-input.
  • fls.input(j).mf(i).name : string, the tag-name of the i-member function of the j-input variable.
  • fls.input(j).mf(i).type : string, the type of the i-member function of the j-input variable.
  • fls.input(j).mf(i).par : real row vector, the parameters of the i-member function of the j-input variable.
  • The outputs have the following structure:

  • fls.output(j).name : string, the tag-name of the j-output variable
  • fls.output(j).range : real row vector in the form [minDom, maxDom] , where minDom means the minimum value of the j-output, and, maxDom means the maximum value of the j-output.
  • fls.output(j).mf(i).name : string, the tag-name of the i-member function of the j-output variable.
  • fls.output(j).mf(i).type : string, the type of the i-member function of the j-output variable.
  • fls.output(j).mf(i).par : real row vector, the parameters of the i-member function of the j-output variable.
  • The rule have the following structure:

  • fls.rule : matrix of real with dimension [nrule, ninputs+noutputs+2] , where: nrules mean the number of rules, ninputs the number of inputs, noutputs the number of outputs.
  • The i value of the j element in columns [1:ninputs] indicate the i-member function of the j input, if the value is negative, then, the complement is applicated, if the value is 0 then, the rule no take in count the input.

    The i value of the j element in columns [ninputs+1:ninputs+noutpus] indicate the i-member function of the j output, if the value is 0 then, the rule no take in count the output.

    The value of the [ninputs+noutputs+1] indicate how the rule was compound: 0 for T-Norm (OR) or 1 for S-Norm (AND).

    The value of the [ninputs+noutputs+2] indicate the weight of the rule.

    Examples

    // A new fls structure
    fls=newfls();
    fls.name="example";
    fls.comment="This is an example";
    fls.TNorm="min";
    fls.SNorm="max";
    fls.Comp="one";
    fls.defuzzMethod="waver";
    fls=addvar(fls,"input","speed",[0 100]);
    fls=addmf(fls,"input",1,"low","trimf",[-50 0 50]);
    fls=addmf(fls,"input",1,"med","trimf",[0 50 100]);
    fls=addmf(fls,"input",1,"high","trimf",[50 100 150]);
    fls=addvar(fls,"output","actuation",[0 1]);
    fls=addmf(fls,"output",1,"run","constant",0);
    fls=addmf(fls,"output",1,"start_to_stop","constant",0.5);
    fls=addmf(fls,"output",1,"stop","constant",1);
    

    See Also

    snorm ,   tnorm ,   complement ,   defuzzm ,   newfls ,   evalfls ,   member_functions ,   checkrule ,  

    Author

    Jaime Urzua Grez