智能控制实验:自适应模糊神经网络(ANFIS,Adaptive Neuro-Fuzzy Inference System)
智能控制实验:自适应模糊神经网络(ANFIS,Adaptive Neuro-Fuzzy Inference System)-CSDN博客
简介:通过Matlab的ANFIS函数,采用自适应模糊神经网络对预设的目标函数进行拟合。
福州大学 自动化系 2024/9/25
指导教师:陈剑
实验任务
模糊神经网络拟合单输入单输出函数
y
=
s
i
n
(
2
x
)
e
x
5
,
x
∈
[
0
,
10
]
y=\frac{sin(2x)}{e^{\frac{x}{5}}} ,x\in[0,10]
y=e5xsin(2x),x∈[0,10]
要求数据总量不小于150。
实验过程
使用x与y的方程创建数据集,自变量x的定义域为0~10,离散元素间隔为0.01,数据总量为1001个。
clc;
clear all;
close all;
x = 0:0.01:10;
y = sin(2*x)./exp(x/5);
data = [x' y'];%转置为行向量以供使用
直接使用未经调整的自适应神经模糊网络进行测试,以作为实验对照组,此时隶属函数数量为2。
% 使用未经优化的FIS直接测试
opt = anfisOptions;%创建FIS优化训练参数
opt.DisplayErrorValues = 0;%不显示每轮的训练误差
opt.DisplayStepSize = 0;%不显示每轮的步长
fis = anfis(data,opt);%创建自适应神经模糊推理系统
anfisOutput0 = evalfis(fis,x');%模糊推理
figure(1);plot(x',y,x',anfisOutput0);
legend('目标值','ANFIS预测值','Location','NorthEast');
ANFIS info:
Number of nodes: 12
Number of linear parameters: 4
Number of nonlinear parameters: 6
Total number of parameters: 10
Number of training data pairs: 1001
Number of checking data pairs: 0
Number of fuzzy rules: 2
Minimal training RMSE = 0.312352

可见此时的模糊神经网络基本无法对函数进行拟合,现对其进行调整,增加隶属函数个数与训练轮次。
% 对FIS进行优化
opt.InitialFIS = 5;%隶属函数个数为5
opt.EpochNumber = 100;%训练次数为100
fis = anfis(data,opt);%创建自适应神经模糊推理系统
anfisOutput1 = evalfis(fis,x');%模糊推理
figure(2);plot(x',y,x',anfisOutput1);
legend('目标值','优化后的ANAFIS预测值','Location','NorthEast');
ANFIS info:
Number of nodes: 24
Number of linear parameters: 10
Number of nonlinear parameters: 15
Total number of parameters: 25
Number of training data pairs: 1001
Number of checking data pairs: 0
Number of fuzzy rules: 5
Minimal training RMSE = 0.00595552

如上图所示,修改隶属函数数量至5,训练轮次至100后,新的网络可良好拟合目标函数。
figure(3);
error0 = anfisOutput0 - y';
error1 = anfisOutput1 - y';
plot(x',error0,x',error1);
legend('预测误差','优化后的预测误差','Location','NorthEast');
figure(4);
subplot(2,1,1);plot(x',error0./y');ylim([-100 100]);
legend('预测误差百分比','Location','NorthEast');
subplot(2,1,2);plot(x',error1./y');ylim([-100 100]);
legend('优化后的预测误差百分比','Location','NorthEast');


对比优化前后的模糊神经网络误差,可见预测误差基本消除。但随着自变量x变大,预测误差仍会变大。于是将自变量x的定义域拓展至0~20进行测试。
clf
x = 0:0.01:20;
y = sin(2*x)./exp(x/5);
data = [x' y'];%转置为行向量以供使用
fis = anfis(data,opt);%创建自适应神经模糊推理系统
anfisOutput2 = evalfis(fis,x');%模糊推理
figure(1);plot(x',y,x',anfisOutput2);
legend('目标值','Rule=5,Epoch=100的预测值','Location','NorthEast');

发现在自变量x范围扩大后,先前的网络变得难以拟合函数,即使x处于[0,10]内也是如此。初步推测原因为目标函数不断收敛,以致模糊网络的隶属函数无法精确表达自变量增大后微小的函数值,故误差随x增大而增大。此外,当x的定义域由[0,10]变为[0,20]后,出现了更甚微小的函数值,较大的变化幅度影响了自适应模糊神经网络训练的过程,导致其在定义域前半段也不能良好地拟合目标函数。
尝试分别将隶属函数数量增加至10,训练轮次增加至200,再次测试并与之前结果进行误差分析与比对。
opt.InitialFIS = 10;%隶属函数个数为10
opt.EpochNumber = 100;%训练次数为100
fis = anfis(data,opt);%创建自适应神经模糊推理系统
anfisOutput3 = evalfis(fis,x');%模糊推理
opt.InitialFIS = 5;%隶属函数个数为5
opt.EpochNumber = 200;%训练次数为200
fis = anfis(data,opt);%创建自适应神经模糊推理系统
anfisOutput4 = evalfis(fis,x');%模糊推理
opt.InitialFIS = 10;%隶属函数个数为10
opt.EpochNumber = 200;%训练次数为200
fis = anfis(data,opt);%创建自适应神经模糊推理系统
anfisOutput5 = evalfis(fis,x');%模糊推理
figure(2);plot(x',y,x',anfisOutput2,'b',x',anfisOutput3,'g',x',anfisOutput4,'y',x',anfisOutput5,'r');
legend('目标值','Rule=5,Epoch=100','Rule=10,Epoch=100','Rule=5,Epoch=200','Rule=10,Epoch=200','Location','NorthEast');
figure(3);
error2 = anfisOutput2 - y';
error3 = anfisOutput3 - y';
error4 = anfisOutput4 - y';
error5 = anfisOutput5 - y';
plot(x',error2,'b',x',error3,'g',x',error4,'y',x',error5,'r');title('误差分析','fontsize',12);
legend('Rule=5,Epoch=100','Rule=10,Epoch=100','Rule=5,Epoch=200','Rule=10,Epoch=200','Location','NorthEast');
figure(4);
subplot(2,2,1);plot(x',error2./y');ylim([-100 100]);
legend('Rule=5,Epoch=100','Location','NorthEast');
subplot(2,2,2);plot(x',error3./y');ylim([-100 100]);
legend('Rule=10,Epoch=100','Location','NorthEast');
subplot(2,2,3);plot(x',error4./y');ylim([-100 100]);
legend('Rule=5,Epoch=200','Location','NorthEast');
subplot(2,2,4);plot(x',error5./y');ylim([-100 100]);
legend('Rule=10,Epoch=200','Location','NorthEast');




通过对照实验可看出,在训练轮次足够多的情况下,继续增加训练轮次无法明显改善拟合效果,徒增训练时间。增加隶属函数数量对改善拟合效果有显著且良好的作用,但具有计算时间过长的局限性。
总结
自适应神经模糊推理系统(Adaptive Neuro-Fuzzy Inference System,ANFIS)结合了模糊逻辑系统(Fuzzy Logic System, FLS)和人工神经网络(Artificial Neural Network, ANN)的优点,用于处理复杂的非线性问题。它的推导过程包括对模糊逻辑系统的参数进行优化,使其能够自适应地学习输入输出关系。由于最终的系统输出结果为每条规则的结果的加权均值,故ANFIS具有只能输出单变量结果的局限性,同时ANFIS的训练过程相对复杂,使用非线性隶属函数或隶属函数数量较多时耗费计算时间较长。
参考文献
[1]韦巍,何衍. 智能控制基础[M]. 北京:清华大学出版社, 2008-11.
[2]王耀南. 智能控制理论及应用[M]. 北京:机械工业出版社, 2008-02.
[3]CSDN@回首愁. ANFIS(自适应神经模糊推理系统,Adaptive Neuro-Fuzzy Inference System)[EB/OL]. 2024-09-11[2024-09-25]. https://blog.csdn.net/helena1993/article/details/142142299.
[4]博客园@王陸. 自适应模糊神经网络ANFIS[EB/OL]. [2024-09-25]. https://www.cnblogs.com/wkfvawl/p/16529220.html.
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)