Why is the output u always 0.166instead of 0 when my input e and es are both 0

1 view (last 30 days)
Why is the output not 0

Accepted Answer

Sam Chak
Sam Chak on 26 Apr 2023
The reason is because output 0.166 is computed from the Center of Area (CoA) defuzzification method. During the initial design stage, if the range of the output is [0, 1], then it is natural for you (or any human) to think of the leftmost magnitude is 0 and the rightmost magnitude is 1. When the centroid defuzzification is applied, the Mamdani FIS cannot drive the output signal to the extremes of the universe, based on your design. This is one of the inherent disadvantages of using the Mamdani fuzzy system. There is a workaround to this issue for Mamdani designers.
Example:
In this example, the desired range of the output is [–2, 2]. Two solutions are provided.
Solution 1: Switch to a Sugeno fuzzy system and use singletons.
This is the simplest and a clean way to drive the output signal to the extremes of the universe. The singleton on the leftmost is , and the singleton on the rightmost is 2.
Solution 2: Readjust the range of the output universe, and reshape the membership functions.
In case you want to stick with the Mamdani system, this process is slightly tedious. The range of the output universe needs to be stretched out a bit, in this case, it's . Then the leftmost and rightmost membership functions (MFs) have to be reshaped by tuning its parameters until desired output is obtained when the inputs are at the extremes of their universes. I have the tendency to select the MFs with fewer parameters to tune. gaussMF has 2, triMF has 3, and trapMF has 4.

More Answers (0)

Categories

Find more on Fuzzy Inference System Modeling in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!