fuzzy logic controller failed design problem
3 次查看(过去 30 天)
显示 更早的评论
This days I study a paper about to design a fuzzy logic controller by using fuzzy() ,but it have some prpblem .
I design a fuzzy logic like it. But is wrong!!!
What is the problem about my learning?
0 个评论
回答(1 个)
Sam Chak
2024-9-30
Hi @KAO CHUN YU
The singleton (constant) output membership functions in Fig. 5 indicate that this is a Sugeno fuzzy system; however, you have inadvertently designed a Mamdani fuzzy system. In earlier releases of the Fuzzy Logic Toolbox, the Mamdani FIS is automatically created by default when you open the Fuzzy Logic Designer app. It is necessary to create a new FIS and specify that it is a "Sugeno system."
fis = sugfis('NumInputs', 2, 'NumInputMFs', 5, 'NumOutputs', 1, 'NumOutputMFs', 9)
%% Input MFs
fis.Inputs(1).Range = [-1 1];
fis.Inputs(1).MembershipFunctions(1).Parameters = [-2.0 -1.0 -0.5];
fis.Inputs(1).MembershipFunctions(2).Parameters = [-1.0 -0.5 0.0];
fis.Inputs(1).MembershipFunctions(3).Parameters = [-0.5 0.0 0.5];
fis.Inputs(1).MembershipFunctions(4).Parameters = [ 0.0 0.5 1.0];
fis.Inputs(1).MembershipFunctions(5).Parameters = [ 0.5 1.0 2.0];
fis.Inputs(2).Range = [-1 1];
fis.Inputs(2).MembershipFunctions(1).Parameters = [-2.0 -1.0 -0.5];
fis.Inputs(2).MembershipFunctions(2).Parameters = [-1.0 -0.5 0.0];
fis.Inputs(2).MembershipFunctions(3).Parameters = [-0.5 0.0 0.5];
fis.Inputs(2).MembershipFunctions(4).Parameters = [ 0.0 0.5 1.0];
fis.Inputs(2).MembershipFunctions(5).Parameters = [ 0.5 1.0 2.0];
figure
subplot(211)
plotmf(fis, 'input', 1), grid on
subplot(212)
plotmf(fis, 'input', 2), grid on
%% Output MFs
fis.outputs(1).MembershipFunctions(1).Parameters = -1.00; % NVB
fis.outputs(1).MembershipFunctions(2).Parameters = -0.75; % NB
fis.outputs(1).MembershipFunctions(3).Parameters = -0.50; % NM
fis.outputs(1).MembershipFunctions(4).Parameters = -0.25; % NS
fis.outputs(1).MembershipFunctions(5).Parameters = -0.00; % ZE
fis.outputs(1).MembershipFunctions(6).Parameters = 0.25; % PS
fis.outputs(1).MembershipFunctions(7).Parameters = 0.50; % PM
fis.outputs(1).MembershipFunctions(8).Parameters = 0.75; % PB
fis.outputs(1).MembershipFunctions(9).Parameters = 1.00; % PVB
%% fis.Rules
fis.Rules = [];
rules = [
"input1==mf1 & input2==mf1 => output1=mf1 (1)"
"input1==mf2 & input2==mf1 => output1=mf2 (1)"
"input1==mf3 & input2==mf1 => output1=mf3 (1)"
"input1==mf4 & input2==mf1 => output1=mf4 (1)"
"input1==mf5 & input2==mf1 => output1=mf5 (1)"
"input1==mf1 & input2==mf2 => output1=mf2 (1)"
"input1==mf2 & input2==mf2 => output1=mf3 (1)"
"input1==mf3 & input2==mf2 => output1=mf4 (1)"
"input1==mf4 & input2==mf2 => output1=mf5 (1)"
"input1==mf5 & input2==mf2 => output1=mf6 (1)"
"input1==mf1 & input2==mf3 => output1=mf3 (1)"
"input1==mf2 & input2==mf3 => output1=mf4 (1)"
"input1==mf3 & input2==mf3 => output1=mf5 (1)"
"input1==mf4 & input2==mf3 => output1=mf6 (1)"
"input1==mf5 & input2==mf3 => output1=mf7 (1)"
"input1==mf1 & input2==mf4 => output1=mf4 (1)"
"input1==mf2 & input2==mf4 => output1=mf5 (1)"
"input1==mf3 & input2==mf4 => output1=mf6 (1)"
"input1==mf4 & input2==mf4 => output1=mf7 (1)"
"input1==mf5 & input2==mf4 => output1=mf8 (1)"
"input1==mf1 & input2==mf5 => output1=mf5 (1)"
"input1==mf2 & input2==mf5 => output1=mf6 (1)"
"input1==mf3 & input2==mf5 => output1=mf7 (1)"
"input1==mf4 & input2==mf5 => output1=mf8 (1)"
"input1==mf5 & input2==mf5 => output1=mf9 (1)"
];
fis = addRule(fis, rules);
%% Control Surface
figure
opt = gensurfOptions(NumGridPoints=51);
gensurf(fis, opt), title('Control Surface')
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!