该示例显示了使用调谐类型-2模糊推理系统(FIS)的混沌时间序列预测。此示例使用粒子群优化调整FIS,这需要全局优化工具箱™软件。
此示例使用以下形式模拟Mackey-Glass(MG)非线性延迟微分方程的时间序列数据。
使用以下配置模拟1200个样本的时间序列。
采样时间
初始条件
为了
ts = 1;numsamples = 1200;tau = 20;x =零(1,Numsamples + Tau + 1);X(Tau + 1)= 1.2;为了T = 1 + Tau:NumSamples + Tau X_dot = 0.2 * x(T-Tau)/(1+(x(t-tau))^ 10)-0.1 * x(t);x(t + 1)= x(t)+ ts * x_dot; 结尾
绘制模拟的MG时间序列数据。
图(1)绘图(x(tau + 2:结束))标题('Mackey-Glass Chaotic Time Series')xlabel( '时间(秒)')ylabel( 'x(t)')
时间序列预测使用已知的时间序列值达到时间
从样本创建1000个输入/输出数据集
d = 4;InputData = Zeros(1000,D);outputData =零(1000,1);为了T = 100 + D-1:1100 + D-2 为了i = 1:d输入数据(t-100-d + 2,i)= x(t-d + i); 结尾OutputData(T-100-D + 2,:) = x(t + 1); 结尾
使用前500个数据集作为培训数据(TRNX.
和trny.
)和第二种500设置为验证数据(VLDX.
和vldy.
)。
trnx = inputData(1:500,:);trny = outputdata(1:500,:);vldx = inputData(501:结束,:);VLDY = OutputData(501:结束,:);
此示例使用Type-2 Sugeno FIS。由于Sugeno FIS具有比Mamdani FIS更少的可调谐参数,因此Sugeno系统通常在优化期间收敛得更快。
fisin = sugfistype2;
添加三个输入,每个输入有三个默认三角形函数(MFS)。最初,通过将每个下部MF设置为等于其对应的上部MF,消除每个输入MF的不确定度(FOU)的足迹。为此,请将每个下部MF的刻度和滞后值设置为1
和0.
, 分别。通过消除所有输入成员函数的FU,您可以配置2型FIS,以表达类型1 FIS。
numinputs = d;numinputmfs = 3;范围= [min(x)max(x)];为了i = 1:numinputs fisin = addinput(fisin,范围, 'nummfs',numinputmfs); 为了j = 1:numinputmfs fisin.inputs(i).membershipfunctions(j).lowerscale = 1;fisin.inputs(i).MembershipFunctions(j).lowerlag = 0; 结尾结尾
为了预测,将输出添加到FIS。输出包含默认的常量成员函数。为提供输入输出映射提供最大分辨率,请将输出MF的数量设置为等于输入MF组合的数量。
numoutputmfs = numinputms ^ numinputs;fisin = addutput(fisin,范围,'nummfs',numoutputmfs);
查看FIS结构。最初,FIS具有零规则。在调整过程中找到了系统的规则。
Plotfis(Fisin)
要调整FIS,请使用以下三个步骤。
在保持输入和输出MF参数常量的同时了解规则库。
调整输入的输出MF参数和输入的上部MF参数,同时保持规则和更低的MF参数常数。
调整输入的较低MF参数,同时保持规则,输出MF和上MF参数常数。
由于规则参数的数量少,第一步是较小的计算昂贵,并且它在训练期间快速收敛到模糊规则库。在第二步之后,系统是训练有素的1个FIS。第三步生产调谐类型-2 FIS。
要学习规则库,首先使用a指定调整选项TunefisOptions.
目的。
选项= TunefisOptions;
由于FIS不包含任何假假的模糊规则,因此使用全局优化方法(遗传算法或粒子群)来学习规则。与本地优化方法相比(图案搜索和模拟退火)相比,全局优化方法在大参数调谐范围内执行更好。对于此示例,使用粒子群优化调整FIS('particleswarm'
)。
options.method ='particleswarm';
要学习新规则,请设置优化类型
至'学习'
。
options.optimationtype =.'学习';
限制输入MF组合数量的最大规则数。调谐规则的数量可以小于此限制,因为调整过程删除重复规则。
options.nummaxrules = numinputmfs ^ numinputs;
如果您有并行计算工具箱™软件,可以通过设置提高调整过程的速度使用指α.
至真的
。如果您没有并行计算工具箱软件,请设置使用指α.
至错误的
。
options.USEPLALLLASTER = FALSE;
设置最大迭代次数10.
。增加迭代的数量可以减少训练错误。然而,较大数量的迭代增加了调整过程的持续时间,并且可以将规则参数过往训练数据。
options.methododeions.maxItations = 10;
由于粒子群优化使用随机搜索,从而获得可重复的结果,初始化随机数生成器到其默认配置。
RNG('默认')
使用该方法调整FIS突
函数需要几分钟。对于此示例,通过设置启用调整runtunefis.
至真的
。在不运行的情况下加载佩带的结果突
,你可以设置runtunefis.
至错误的
。
runtunefis = false;
使用指定的培训数据和选项调整FIS。
如果runtunefis fisout1 = tunefis(fisin,[],trnx,trny,选项);别的tunedfis = load( 'tunedfischaotictimimeseriestype2.mat');fisout1 = tunedfis.fisout1; 结尾
查看培训的FIS的结构,其中包含新的学习规则。
Plotfis(Fisout1)
检查学习规则库调整的各个输入输出关系。例如,下图显示了第二输入和输出之间的关系。
Gensurf(Fisout1,GensurfOptions('inputIndex',2))
使用输入验证数据评估调谐的FIS。绘制实际生成的输出,使用预期的验证输出,并计算根均方误差(RMSE)。
plotactualandexpectedresultwithrmse(fisout1,VLDX,VLDY)
调整上部成员函数参数。2型Sugeno FIS仅支持酥脆输出功金宝app能。因此,该步骤调谐输入上部MFS和清晰的输出功能。
使用输入和输出参数设置gettubalablesstings.
。由于FIS使用三角形输入MFS,因此您可以使用非对称滞后值调整输入MFS。
[在,Out] = GetTunablyTeps(Fisout1,'不对称填料',真的);
禁用降低MF参数的调整。
为了i = 1:长度(in)为了j = 1:长度(在(i).membershipfunctions)中(i).membershipfunctions(j).lowerscale.free = false;在(i).membershipfunctions(j).lowerlag.free = false; 结尾结尾
要优化现有的可调MF参数,同时保持规则基础常量,设置优化类型
至'调整'
。
options.optimationtype =.'调整';
使用指定的调整数据和选项调整FIS。在不运行的情况下加载佩带的结果突
,你可以设置runtunefis.
至错误的
。
RNG('默认') 如果runtunefis fisout2 = tunefis(fisout1,[out; out],trnx,trny,选项); 别的tunedfis = load( 'tunedfischaotictimimeseriestype2.mat');fisout2 = tunedfis.fisout2; 结尾
查看培训的FIS的结构,现在包含调谐的上部MF参数。
Plotfis(Fisout2)
使用验证数据进行调整的FIS,计算RMSE,并使用预期的验证输出绘制实际生成的输出。
plotactualandexpectedresultwithrmse(fisout2,VLDX,VLDY)
调整上部MF参数提高了FIS的性能。此结果相当于调谐1型FIS。
仅调整输入较低的MF参数。为此,请调整较低尺度和滞后值,并禁用上MF参数的调整。
为了i = 1:长度(in)为了j = 1:长度(在(i).membershipfunctions)中(i).membershipfunctions(j).upperparameters.free = false;在(i).membershipfunctions(j).lowerscale.free = true;在(i).membershipfunctions(j).lowerlag.free = true; 结尾结尾
使用指定的调整数据和选项调整FIS。在不运行的情况下加载佩带的结果突
,你可以设置runtunefis.
至错误的
。
RNG('默认') 如果runtunefis fisout3 = tunefis(fisout2,in,trnx,trny,选项); 别的tunedfis = load( 'tunedfischaotictimimeseriestype2.mat');fisout3 = tunedfis.fisout3; 结尾
查看培训的FIS的结构,现在包含调谐的较低MF参数。
Plotfis(Fisout3)
使用验证数据进行调整的FIS,计算RMSE,并使用预期的验证输出绘制实际生成的输出。
plotactualandexpectedresultwithrmse(fisout3,VLDX,VLDY)
调整上下MF值都提高了FIS性能。当培训的FIS包括调谐的上限和下参数值时,RMSE可提高。
与类型1 MF相比,Type-2 MFS提供额外的可调参数。因此,通过足够的训练数据,调整类型-2 FIS可以比调谐类型1 FIS更好地拟合训练数据。
总的来说,您可以通过修改以下任何FIS属性或调整选项来生成不同的调整结果:
输入数量
MFS数量
MFS的类型
优化方法
调整迭代的数量
功能[RMSE,Acty] = Calculatermse(FIS,X,Y)%指定FIS评估选项EvalOptions = evalFisOptions( “extentOutputfuzzysetMessage”那 “没有任何”那 ......“norulefiredmessage”那 “没有任何”那 “OutofRangeInputValuemessage”那 “没有任何”); %评估FIS.acty = evalfis(FIS,X,Evaloptions); %计算RMSE.del = acty - y;RMSE = SQRT(平均值(del. ^ 2)); 结尾功能plotactualandexpectedresultwithrmse(fis,vldx,vldy)[Rmse,Acty] = Calculatermse(FIS,VLDX,VLDY);图绘图([acty vldy])轴([0长度(vldy)min(vldy)-0.01 max(vldy)+0.13])xlabel( '样本索引')ylabel( '信号值') 标题([ 'rmse ='num2str(RMSE)])图例([ “实际输出”“预期产出”], '地点'那 “东北”) 结尾