sugfis
Sugeno fuzzy inference system
Description
Use a sugfis
object to represent a type-1 Sugeno fuzzy
inference system (FIS).
As an alternative to a type-1 Sugeno system, you can create a:
Type-1 Mamdani system using a
mamfis
objectType-2 Sugeno system using a
sugfistype2
objectType-2 Mamdani system using a
mamfistype2
object
For more information on the different types of fuzzy inference systems, see Mamdani and Sugeno Fuzzy Inference Systems and Type-2 Fuzzy Inference Systems.
Creation
To create a Sugeno FIS object, use one of the following methods:
The
sugfis
function.If you have input/output data, you can use the
genfis
function.If you have a FIS file (
*.fis
) for a Sugeno system, you can use thereadfis
function.Convert an existing Mamdani FIS to a Sugeno FIS using
convertToSugeno
.
Description
fis = sugfis
returns a Sugeno FIS with default property values.
To modify the properties of the fuzzy system, use dot notation.
fis = sugfis(
specifies FIS
configuration information or sets object properties using one or more name-value
arguments.Name=Value
)
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Example: NumInputs=2
configures the fuzzy system to have two input
variables
Number of FIS inputs, specified as a nonnegative integer.
Number of membership functions for each FIS input, specified as a positive integer.
Number of FIS outputs, specified as a nonnegative integer.
Number of membership functions for each FIS output, specified as a positive integer.
Membership function type for input variables, specified as either
"trimf"
(triangular MF) or "gaussmf"
(Gaussian MF). For each input variable, the membership functions are uniformly
distributed over the variable range with approximately 80% overlap in the MF
supports.
Output membership functions are set to "constant"
and
uniformly distributed over the output variable ranges.
Option for automatically adding rules, specified as one of the following:
"allcombinations"
— If bothNumInputs
andNumOutputs
are greater than zero, create rules with antecedents that contain all input membership function combinations. Each rule consequent contains all the output variables and uses the first membership function of each output."none"
— Create a FIS without any rules.
FIS name, specified as a string or character vector.
This argument sets the Name
property.
AND operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"prod"
— Product of fuzzified input values"min"
— Minimum of fuzzified input valuesString or character vector — Name of a custom AND function in the current working folder or on the MATLAB® path
Function handle — Custom AND function in the current working folder or on the MATLAB path
This argument sets the AndMethod
property.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
OR operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"probor"
— Probabilistic OR of fuzzified input values. For more information, seeprobor
."max"
— Maximum of fuzzified input values.String or character vector — Name of a custom OR function in the current working folder or on the MATLAB path.
Function handle — Custom OR function in the current working folder or on the MATLAB path.
This argument sets the OrMethod
property.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
Implication method for computing consequent fuzzy set, specified as
"prod"
. Sugeno systems always use the "prod"
implication method, which scales the consequent membership function by the
antecedent result value.
This argument sets the ImplicationMethod
property.
For more information on implication and the fuzzy inference process, see Fuzzy Inference Process.
Aggregation method for combining rule consequents, specified as
"sum"
. Sugeno systems always use the "sum"
aggregation method, which is the sum of the consequent fuzzy sets.
This argument sets the AggregationMethod
property.
For more information on aggregation and the fuzzy inference process, see Fuzzy Inference Process.
Defuzzification method for computing crisp output values from the aggregated output fuzzy set, specified as one of the following:
"wtaver"
— Weighted average of all rule outputs"wtsum"
— Weighted sum of all rule outputs
This argument sets the DefuzzificationMethod
property.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on defuzzification and the fuzzy inference process, see Fuzzy Inference Process.
Option to disable consistency checks when property values change, specified as a logical value.
By default, when you change the value of a property of a
sugfis
object, the software verifies whether the new
property value is consistent with the other object properties. These checks can
affect performance, particularly when creating and updating fuzzy systems within
loops.
To disable these checks, which results in faster FIS construction, set
DisableStructuralChecks
to true
.
Note
Disabling structural checks can result in an invalid
sugfis
object.
To reenable the consistency checks, first verify that the changes you made to
the FIS are consistent and produce a valid sugfis
object.
Then, set DisableStructuralChecks
to
false
. If the sugfis
object is
invalid, reenabling the consistency checks generates an error.
This argument sets the DisableStructuralChecks
property.
Properties
FIS name, specified as a string or character vector.
AND operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"prod"
— Product of fuzzified input values"min"
— Minimum of fuzzified input valuesString or character vector — Name of a custom AND function in the current working folder or on the MATLAB path
Function handle — Custom AND function in the current working folder or on the MATLAB path
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
OR operator method for combining fuzzified input values in a fuzzy rule antecedent, specified as one of the following:
"probor"
— Probabilistic OR of fuzzified input values. For more information, seeprobor
."max"
— Maximum of fuzzified input values.String or character vector — Name of a custom OR function in the current working folder or on the MATLAB path.
Function handle — Custom OR function in the current working folder or on the MATLAB path.
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on fuzzy operators and the fuzzy inference process, see Fuzzy Inference Process.
Implication method for computing consequent fuzzy set, specified as
"prod"
. Sugeno systems always use the "prod"
implication method, which scales the consequent membership function by the antecedent
result value.
For more information on implication and the fuzzy inference process, see Fuzzy Inference Process.
Aggregation method for combining rule consequents, specified as
"sum"
. Sugeno systems always use the "sum"
aggregation method, which is the sum of the consequent fuzzy sets.
For more information on aggregation and the fuzzy inference process, see Fuzzy Inference Process.
Defuzzification method for computing crisp output values from the aggregated output fuzzy set, specified as one of the following:
"wtaver"
— Weighted average of all rule outputs"wtsum"
— Weighted sum of all rule outputs
For more information on using custom functions, see Build Fuzzy Systems Using Custom Functions.
For more information on defuzzification and the fuzzy inference process, see Fuzzy Inference Process.
Option to disable consistency checks when property values change, specified as a logical value.
By default, when you change the value of a property of a
sugfis
object, the software verifies whether the new
property value is consistent with the other object properties. These checks can affect
performance, particularly when creating and updating fuzzy systems within loops.
To disable these checks, which results in faster FIS construction, set
DisableStructuralChecks
to true
.
Note
Disabling structural checks can result in an invalid
sugfis
object.
To reenable the consistency checks, first verify that the changes you made to the FIS
are consistent and produce a valid sugfis
object. Then, set
DisableStructuralChecks
to false
. If the
sugfis
object is invalid, reenabling the consistency
checks generates an error.
FIS input variables, specified as a vector of fisvar
objects. To add and remove input variables, use addInput
and removeInput
, respectively. You can modify the properties of the input variables using dot notation.
You can also create a vector of fisvar
objects and assign it to Inputs
using dot notation.
You can add membership functions to input variables using the addMF
function.
FIS output variables, specified as a vector of fisvar
objects. To add and remove output variables, use addOutput
and removeOutput
, respectively.
You can also create a vector of fisvar
objects and assign it to Outputs
using dot notation.
You can add membership functions to output variables using the addMF
function.
FIS input variables, specified as a vector of fisrule
objects. To add fuzzy rules, use the addRule
function.
You can also create a vector of fisrule
objects and assign it to
Rules
using dot notation.
To remove a rule, set the corresponding rule vector element to []
.
For example, to remove the tenth rule from the rule list, type:
fis.Rules(10) = [];
Sugeno systems do not support rules with NOT logic in the consequent.
Object Functions
addInput | Add input variable to fuzzy inference system |
removeInput | Remove input variable from fuzzy inference system |
addOutput | Add output variable to fuzzy inference system |
removeOutput | Remove output variable from fuzzy inference system |
addRule | Add rule to fuzzy inference system |
addMF | Add membership function to fuzzy variable |
removeMF | Remove membership function from fuzzy variable |
evalfis | Evaluate fuzzy inference system |
writeFIS | Save fuzzy inference system to file |
convertToType2 | Convert type-1 fuzzy inference system into type-2 fuzzy inference system |
Examples
Create a Sugeno fuzzy inference system with default property values.
fis = sugfis;
Modify the system properties using dot notation. For example, configure fis
to use weighted-sum defuzzification.
fis.DefuzzificationMethod = "wtsum";
Alternatively, you can specify one of more FIS properties when you create a fuzzy system. For example, create a Sugeno fuzzy system with specified AND and OR methods.
fis = sugfis(AndMethod="min",OrMethod="max");
Create a Sugeno fuzzy inference system with three inputs and one output.
fis = sugfis(NumInputs=3,NumOutputs=1)
fis = sugfis with properties: Name: "fis" AndMethod: "prod" OrMethod: "probor" ImplicationMethod: "prod" AggregationMethod: "sum" DefuzzificationMethod: "wtaver" DisableStructuralChecks: 0 Inputs: [1×3 fisvar] Outputs: [1×1 fisvar] Rules: [1×27 fisrule] See 'getTunableSettings' method for parameter optimization.
By default, the software creates a rule for each possible input combination.
Load a Sugeno FIS from a file.
fis = readfis("sugeno1");
The output variable has two membership functions. View the properties of the first membership function.
fis.Outputs(1).MembershipFunctions(1)
ans = fismf with properties: Type: "linear" Parameters: [-1 -1] Name: "line1"
View the properties of the second membership function.
fis.Outputs(1).MembershipFunctions(2)
ans = fismf with properties: Type: "linear" Parameters: [1 -1] Name: "line2"
The input membership functions and rules define which of these output functions are expressed and when.
fis.Rules
ans = 1×2 fisrule array with properties: Description Antecedent Consequent Weight Connection Details: Description _________________________________ 1 "input==low => output=line1 (1)" 2 "input==high => output=line2 (1)"
Plot the input membership functions of this system. The low
membership function generally refers to input values less than zero, while high
refers to values greater than zero.
plotmf(fis,"input",1)
Plot the output surface for this FIS.
gensurf(fis)
The overall fuzzy system output switches smoothly from the line called line1
to the line called line2
.
Alternative Functionality
App
You can interactively create a Sugeno FIS using the Fuzzy Logic Designer or Neuro-Fuzzy Designer apps. You can then export the system to the MATLAB workspace.
Version History
Introduced in R2018bThis function replaces newfis
for creating Sugeno fuzzy inference
systems.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)