How to design constant membership functions (singletons) for the output of a Mamdani fuzzy system?
9 次查看(过去 30 天)
显示 更早的评论
I want design fuzzy logic controller with output as constant membership function.But in mamdani method constant membership function is not available.I need help....... I have attached the reference copy of my project
0 个评论
回答(1 个)
Sam Chak
2024-9-27
Hi @Peddireddy
This is a decade-old question, but it is indeed possible to implement a Mamdani fuzzy system (MamFIS) for the output using a constant membership function (also known as a singleton in fuzzy terminology). The key is to use the triangular membership function. The result will be exactly the same as that produced by the Takagi–Sugeno fuzzy system (SugFIS), because the singleton-based SugFIS is a special case of MamFIS.
In the following example, the singleton-based MamFIS produces a 100% linear surface, exactly the same as the SugFIS, resulting in . Personally, I prefer the singleton-based MamFIS because plotting output membership functions for SugFIS is still not supported, despite the introduction of the plotmf() command in R2006a.
%% 100% Mamdani fuzzy system
fis = mamfis;
%% Fuzzy Inputs, x and y
fis = addInput(fis, [0+eps 1], 'Name', 'x');
fis = addMF(fis, 'x', 'linzmf', [0 1], 'Name', 'small'); % Small fuzzy set for x
fis = addMF(fis, 'x', 'linsmf', [0 1], 'Name', 'large'); % Large fuzzy set for x
fis = addInput(fis, [0+eps 1], 'Name', 'y');
fis = addMF(fis, 'y', 'linzmf', [0 1], 'Name', 'small'); % small fuzzy set for y
fis = addMF(fis, 'y', 'linsmf', [0 1], 'Name', 'large'); % large fuzzy set for y
figure
subplot(211)
plotmf(fis, 'input', 1), grid on
subplot(212)
plotmf(fis, 'input', 2), grid on
sgtitle('Inputs membership functions')
%% Fuzzy Output using Constant membership functions
fis = addOutput(fis, [0 2], 'Name', 'z');
fis = addMF(fis, 'z', 'trimf', [0 0 0], 'Name', 'small');
fis = addMF(fis, 'z', 'trimf', [1 1 1], 'Name', 'mean');
fis = addMF(fis, 'z', 'trimf', [2 2 2], 'Name', 'big');
figure
plotmf(fis, 'output', 1, 10001), grid on, xlim([-1 3])
title('Output membership functions')
%% Rule
rules = [
"x==small & y==small => z=small"
"x==small & y==large => z=mean"
"x==large & y==small => z=mean"
"x==large & y==large => z=big"
];
fis = addRule(fis, rules);
%% The surface
figure
opt = gensurfOptions('NumGridPoints', 51);
gensurf(fis, opt), grid on, grid minor, % zlim([2 4])
title('Linear Surface using singleton-based MamFIS')
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Fuzzy Logic Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!