自适应神经网络ANFIS设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
自适应神经网络(ANFIS)设计
5/29/2004
自适应神经网络模糊推理系统(ANFIS)
(Adaptive Network-based Fuzzy Inference System)
第一篇
体会函数anfis函数中参数的含义.
x=(0:0.1:10); %定义自变量x
y=sin(2*x)./exp(x/5); %定义因变量y
trnData=[x' y']; %训练学习的输入输出数据距阵
numMFs=5; %5条隶属度函数
mfType='gaussmf'; %采用高斯型隶属度函数,可以选择其他的形式来进行比较
epoch_n=2000; %训练的次数为2000次
in_fismat=genfis1(trnData,numMFs,mfType); %无冗余的系统
out_fismat=anfis(trnData,in_fismat,epoch_n); %训练输出
plot(x,y,'o',x,evalfis(x',out_fismat),'k'); %画图
legend('Training Data','ANFIS Output'); %显示原始数据和训练输出数据
训练图形
第二篇
在这个例子中,不但提供了训练数据,而且提供了效验数据,两种数据在输入空间均匀采样. 注:tic toc用来计算时间
numpts=51;%数据点个数为51
x1=linspace(-1,1,numpts)';
y=sin(pi*x1)+0.8*sin(3*pi*x1)+0.2*sin(5*pi*x1);
data=[x1 y]; %整个数据集
trndata=data(1:2:numpts,:); %训练数据集
chkdata=data(2:2:numpts,:); %检验数据集
figure(1)
plot(trndata(:,1),trndata(:,2),'o',chkdata(:,1),chkdata(:,2),'kx') %绘制训练数据集和检验数据集的分布曲线
legend('训练数据集','检验数据集');
%建立用于模糊建模的Sugeno型模糊推理系统
%采用genfis1函数直接由训练数据生成模糊推理系统
nummfs=5;%隶属度函数个数
mftypes='gaussmf';%隶属度函数类型
fismat=genfis1(trndata,nummfs,mftypes);
%绘制模糊推理系统的初始隶属度函数
[x,mf]=plotmf(fismat,'input',1);
figure(2)
plot(x,mf)
title('初始隶属度函数')
附图
训练数据和检验数据ANFIS的初始隶属度函数
numepochs=40;%训练次数
[fismat1,trnerr,ss,fismat2,chkerr]=anfis(trndata,fismat,numepochs,nan,chkdata);
%计算训练后神经网络模糊系统的输出与训练数据的均方根误差
trnout=evalfis(trndata(:,1),fismat1);
trnRMSE=norm(trnout-trndata(:,2))/sqrt(length(trnout));
%绘制训练过程中均方根误差的变化情况
epoch=1:numepochs;
figure(3)
plot(epoch,trnerr,'o',epoch,chkerr,'kx')
训练过程中均方根误差的变化曲线
%绘制训练过程中的最小二乘误差变化情况,如果训练数据和核对数据的误差同时减小,模型才是有效的。
legend('训练数据误差','效验数据误差')
hold on;plot(epoch,[trnerr chkerr]);hold off
%绘制训练过程中步长的变化情况
figure(4)
plot(epoch,ss,'-',epoch,ss,'ko')
xlabel('epochs'),ylabel('ss'),title('Step Sizes')
%下面绘制训练后模糊推理系统的隶属度函数曲线
[x,mf]=plotmf(fismat1,'input',1);
figure(5)
plot(x,mf)
title('训练后的隶属度函数');
训练步长变化曲线
训练后模糊推理系统的隶属度函数