智能控制实验:模糊控制基础(Fuzzy)-CSDN博客

智能控制实验:感知机(Perceptron)-CSDN博客

智能控制实验:自适应模糊神经网络(ANFIS,Adaptive Neuro-Fuzzy Inference System)-CSDN博客

智能控制实验:反向传播神经网络(BP,Back Propagation)-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.

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐