Scilab Fuzzy Logic System Structure
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.
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, 'wtaver'
for weigthed average,
'wtsum'
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.
Jaime Urzua Grez
Holger Nahrstaedt