主要内容

使用2型FIS预测混沌时间序列

这个例子展示了混沌时间序列预测使用调谐2型模糊推理系统(FIS)。这个例子曲调FIS使用粒子群优化,这就需要全局优化工具箱™软件。

时间序列数据

这个示例使用以下形式的模拟时间序列数据Mackey-Glass (MG)非线性时滞微分方程。

x ˙ ( t ) = 0 2 x ( t - - - - - - τ ) 1 + x 10 ( t - - - - - - τ ) - - - - - - 0 1 x ( t )

模拟1200年的时间序列样本使用以下配置。

  • 样品时间<年代pan class="inlineequation"> t 年代 = 1 证券交易委员会

  • 初始条件<年代pan class="inlineequation"> x ( 0 ) = 1 2

  • τ = 20.

  • x ( t - - - - - - τ ) = 0 为<年代pan class="inlineequation"> t < τ

ts = 1;numSamples = 1200;τ= 20;x = 0 (1, numSamples +τ+ 1);x(τ)+ 1)= 1.2;<年代pan style="color:#0000FF">为t = 1 +τ:numSamples + x (t-tau) /τx_dot = 0.2 * (1 + (x (t-tau)) ^ 10) -0.1 * x (t);x (t + 1) = x (t) + ts * x_dot;<年代pan style="color:#0000FF">结束

绘制模拟MG时间序列数据。

图(1)情节(x(τ)+ 2:结束)标题(<年代pan style="color:#A020F0">Mackey-Glass混沌时间序列的)包含(<年代pan style="color:#A020F0">的时间(秒))ylabel (<年代pan style="color:#A020F0">“x (t)”)

图包含一个坐标轴对象。坐标轴对象与标题Mackey-Glass混沌时间序列,包含时间(秒),ylabel x (t)包含一个类型的对象。

生成训练和验证数据

时间序列预测使用已知时间序列值了<年代pan class="emphasis">t预测未来值<年代pan class="inlineequation"> t + P 。这种类型的预测的标准方法是创建一个映射<年代pan class="emphasis">D样品数据点,采样每Δ单位时间(<年代pan class="inlineequation"> x ( t - - - - - - ( D - - - - - - 1 ) Δ ) , , x ( t - - - - - - Δ ) , x ( t ) )来预测未来值<年代pan class="inlineequation"> x = ( t + P ) 。对于这个示例,集<年代pan class="inlineequation"> D = 4 和<年代pan class="inlineequation"> Δ = P = 1 。因此,对于每一个<年代pan class="emphasis">t,输入和输出训练数据集<年代pan class="inlineequation"> ( x ( t - - - - - - 3 ) , x ( t - - - - - - 2 ) , x ( t - - - - - - 1 ) , x ( t ) ] 和<年代pan class="inlineequation"> x ( t + 1 ) ,分别。换句话说,使用四个连续的时间序列值来预测未来值。

创造1000个输入/输出数据集的样本<年代pan class="inlineequation"> x ( One hundred. + D - - - - - - 1 ) 来<年代pan class="inlineequation"> x ( 1100年 + D - - - - - - 2 )

D = 4;inputData = 0 (1000 D);outputData = 0 (1000 1);<年代pan style="color:#0000FF">为t = 100 + D-1:1100 + d2的<年代pan style="color:#0000FF">为i = 1: D inputData (t - 100 D + 2, i) = x(时距+ i);<年代pan style="color:#0000FF">结束outputData (t - 100 d + 2:) = x (t + 1);<年代pan style="color:#0000FF">结束

使用第一个500数据集作为训练数据(trnXtrnY)和第二500套验证数据(vldXvldY)。

trnX = inputData (1:50 0:);trnY = outputData (1:50 0:);vldX = inputData(501年:,);vldY = outputData(501年:,);

构建金融中间人

这个示例使用2型Sugeno FIS。自从Sugeno FIS可调参数少于Mamdani FIS, Sugeno系统通常在优化收敛速度更快。

fisin = sugfistype2;

添加三个输入,每个有三个默认三角隶属度函数(MFs)。最初,消除不确定性的足迹(4)每个输入MF通过设置每个低MF等于相应的上层MF。为此,设置每个降低MF的比例和滞后值10,分别。通过消除所有输入隶属函数的笨人,你配置2型金融中间人的行为像一个1型金融中间人。

numInputs = D;numInputMFs = 3;范围= [min (x) max (x)];<年代pan style="color:#0000FF">为i = 1: numInputs fisin = addInput (fisin、范围、<年代pan style="color:#A020F0">“NumMFs”,numInputMFs);<年代pan style="color:#0000FF">为j = 1: numInputMFs fisin.Inputs (i) .MembershipFunctions (j)。LowerScale = 1;fisin.Inputs (i) .MembershipFunctions (j)。LowerLag = 0;<年代pan style="color:#0000FF">结束结束

FIS预测,添加一个输出。输出包含默认常量成员函数。提供最大分辨率的输入输出映射,使输出MFs的数量等于输入MF组合的数量。

numOutputMFs = numInputMFs ^ numInputs;fisin = addOutput (fisin、范围、<年代pan style="color:#A020F0">“NumMFs”,numOutputMFs);

查看FIS结构。最初,FIS的规则为零。规则系统的调优过程中被发现。

plotfis (fisin)

图包含6轴对象。坐标轴对象1包含input1(3)包含6行类型的对象。坐标轴对象2包含input2(3)包含6行类型的对象。轴和包含对象3 input3(3)包含6行类型的对象。4轴对象包含input4(3)包含6行类型的对象。坐标轴对象和包含5 output1(81)包含一个文本类型的对象。坐标轴对象和包含6 fis(0)包含一个文本类型的对象。

优化金融中间人与训练数据

调整金融中间人,你使用以下三个步骤。

  1. 学习规则库,同时保持输入和输出MF参数不变。

  2. 调整输出参数和曼氏金融上层MF的参数输入,同时保持规则和更低的MF参数不变。

  3. 优化低MF参数输入的同时保持规则,输出MF和上层MF参数不变。

第一步是少计算昂贵由于小数量的规则参数,它快速地收敛于一个模糊规则库中训练。第二步后,系统是一个训练有素的1型金融中间人。第三步产生2型金融中间人。

学习规则

学习规则库,首先使用一个指定优化选项tunefisOptions对象。

选择= tunefisOptions;

自从FIS不包含任何预调模糊规则,使用一个全局优化方法(遗传算法或粒子群)学习规则。全局优化方法有更好的表现在大参数调优范围比局部优化方法(模式搜索和模拟退火)。对于这个示例,调优FIS使用粒子群优化(“particleswarm”)。

选项。方法=<年代pan style="color:#A020F0">“particleswarm”;

学习新规则,设置OptimizationType“学习”

选项。OptimizationType =<年代pan style="color:#A020F0">“学习”;

限制规则的最大数量的数量输入MF的组合。的数量调整规则可以低于这一限制,自调优过程移除重复的规则。

选项。NumMaxRules = numInputMFs ^ numInputs;

如果你有并行计算工具箱™软件,你可以通过设置提高优化过程的速度UseParallel真正的。如果你没有并行计算工具箱软件,集UseParallel

选项。UseParallel = false;

设置最大迭代次数10。增加迭代的数量可以减少训练误差。然而,大量的迭代优化过程的持续时间,可以增加overtune规则参数训练数据。

options.MethodOptions。MaxIterations = 10;

由于粒子群优化使用随机搜索,获得可重复的结果,初始化随机数发生器其默认配置。

rng (<年代pan style="color:#A020F0">“默认”)

调优FIS使用tunefis函数过程需要几分钟的时间。对于这个示例,使优化设置runtunefis真正的。加载pretrained结果没有运行tunefis,你可以设置runtunefis

runtunefis = false;

调优FIS使用指定的训练数据和选项。

如果[],runtunefis fisout1 = tunefis (fisin trnX, trnY,选项);<年代pan style="color:#0000FF">其他的tunedfis =负载(<年代pan style="color:#A020F0">“tunedfischaotictimeseriestype2.mat”);fisout1 = tunedfis.fisout1;<年代pan style="color:#0000FF">结束

视图的结构训练FIS,其中包含新习得的规则。

plotfis (fisout1)

图包含6轴对象。坐标轴对象1包含input1(3)包含6行类型的对象。坐标轴对象2包含input2(3)包含6行类型的对象。轴和包含对象3 input3(3)包含6行类型的对象。4轴对象包含input4(3)包含6行类型的对象。坐标轴对象和包含5 output1(81)包含一个文本类型的对象。坐标轴对象和包含6 fis(69)包含一个文本类型的对象。

检查个人的投入产出关系调整的规则库。例如,下图显示了第二个输入和输出之间的关系。

gensurf (fisout1 gensurfOptions (<年代pan style="color:#A020F0">“InputIndex”2))

图包含一个坐标轴对象。坐标轴对象包含input2, ylabel output1包含一个类型的对象。

评估调整FIS使用输入验证数据。情节生成实际的输出与预期的验证输出,并计算均方根误差(RMSE)。

plotActualAndExpectedResultsWithRMSE (fisout1 vldX vldY)

图包含一个坐标轴对象。坐标轴对象标题RMSE = 0.12635,包含样本指数,ylabel信号值包含2线类型的对象。这些对象代表实际产出,预期输出。

曲调上隶属函数参数

调优上隶属函数参数。2型Sugeno FIS只支持的输出功能金宝app。因此,这一步曲调输入上MFs和脆输出功能。

获得输入和输出参数设置使用getTunableSettings。由于FIS使用三角输入MFs,您可以使用非对称调整输入MFs滞后值。

[,]= getTunableSettings (fisout1<年代pan style="color:#A020F0">“AsymmetricLag”,真正的);

禁用低MF的调优参数。

i = 1:长度()<年代pan style="color:#0000FF">为j = 1:长度((我).MembershipFunctions) (i) .MembershipFunctions .LowerScale (j)。自由= false;(我).MembershipFunctions .LowerLag (j)。自由= false;<年代pan style="color:#0000FF">结束结束

优化现有的可调参数同时保持规则库曼氏金融常数,集OptimizationType“优化”

选项。OptimizationType =<年代pan style="color:#A020F0">“优化”;

调优FIS使用指定的调优数据和选择。加载pretrained结果没有运行tunefis,你可以设置runtunefis

rng (<年代pan style="color:#A020F0">“默认”)<年代pan style="color:#0000FF">如果runtunefis fisout2 = tunefis (fisout1 [;], trnX, trnY,选项);<年代pan style="color:#0000FF">其他的tunedfis =负载(<年代pan style="color:#A020F0">“tunedfischaotictimeseriestype2.mat”);fisout2 = tunedfis.fisout2;<年代pan style="color:#0000FF">结束

视图的结构训练FIS,现在包含调上MF参数。

plotfis (fisout2)

图包含6轴对象。坐标轴对象1包含input1(3)包含6行类型的对象。坐标轴对象2包含input2(3)包含6行类型的对象。轴和包含对象3 input3(3)包含6行类型的对象。4轴对象包含input4(3)包含6行类型的对象。坐标轴对象和包含5 output1(81)包含一个文本类型的对象。坐标轴对象和包含6 fis(69)包含一个文本类型的对象。

评估调整FIS使用验证数据,计算RMSE,情节生成实际的输出与预期的验证输出。

plotActualAndExpectedResultsWithRMSE (fisout2 vldX vldY)

图包含一个坐标轴对象。坐标轴对象标题RMSE = 0.062922,包含样本指数,ylabel信号值包含2线类型的对象。这些对象代表实际产出,预期输出。

优化上层MF参数改善FIS的性能。这个结果相当于调优1型金融中间人。

优化低隶属函数参数

只有输入低MF参数。为此,设置较低的比例和滞后值可调,禁用上层MF的调优参数。

i = 1:长度()<年代pan style="color:#0000FF">为j = 1:长度((我).MembershipFunctions) (i) .MembershipFunctions .UpperParameters (j)。自由= false;(我).MembershipFunctions .LowerScale (j)。自由= true;(我).MembershipFunctions .LowerLag (j)。自由= true;<年代pan style="color:#0000FF">结束结束

调优FIS使用指定的调优数据和选择。加载pretrained结果没有运行tunefis,你可以设置runtunefis

rng (<年代pan style="color:#A020F0">“默认”)<年代pan style="color:#0000FF">如果runtunefis fisout3 = tunefis (fisout2, trnX, trnY,选项);<年代pan style="color:#0000FF">其他的tunedfis =负载(<年代pan style="color:#A020F0">“tunedfischaotictimeseriestype2.mat”);fisout3 = tunedfis.fisout3;<年代pan style="color:#0000FF">结束

训练FIS的视图结构,现在包含调整低MF参数。

plotfis (fisout3)

图包含6轴对象。坐标轴对象1包含input1(3)包含6行类型的对象。坐标轴对象2包含input2(3)包含6行类型的对象。轴和包含对象3 input3(3)包含6行类型的对象。4轴对象包含input4(3)包含6行类型的对象。坐标轴对象和包含5 output1(81)包含一个文本类型的对象。坐标轴对象和包含6 fis(69)包含一个文本类型的对象。

评估调整FIS使用验证数据,计算RMSE,情节生成实际的输出与预期的验证输出。

plotActualAndExpectedResultsWithRMSE (fisout3 vldX vldY)

图包含一个坐标轴对象。坐标轴对象标题RMSE = 0.047573,包含样本指数,ylabel信号值包含2线类型的对象。这些对象代表实际产出,预期输出。

调优的上半部分和下半部分都MF值提高了FIS的性能。训练时的RMSE改善FIS包括调整上下参数值。

结论

2型MFs相比1型MFs提供了额外的可调参数。因此,适当的训练数据,调整2型金融中间人可以训练数据比调1型金融中间人。

总的来说,你可以产生不同的优化结果通过修改下列FIS属性或调优选项:

  • 输入数量

  • MFs的数量

  • MFs的类型

  • 优化方法

  • 数量的优化迭代

本地函数

函数[rmse, actY] = calculateRMSE (fis, x, y)<年代pan style="color:#228B22">%为FIS评估指定选项evalOptions = evalfisOptions (<年代pan style="color:#A020F0">“EmptyOutputFuzzySetMessage”,<年代pan style="color:#A020F0">“没有”,<年代pan style="color:#0000FF">…“NoRuleFiredMessage”,<年代pan style="color:#A020F0">“没有”,<年代pan style="color:#A020F0">“OutOfRangeInputValueMessage”,<年代pan style="color:#A020F0">“没有”);<年代pan style="color:#228B22">%评估金融中间人actY = evalfis (fis, x, evalOptions);<年代pan style="color:#228B22">%计算RMSE德尔= actY - y;rmse =√意味着(del。^ 2));<年代pan style="color:#0000FF">结束函数plotActualAndExpectedResultsWithRMSE (fis、vldX vldY) [rmse actY] = calculateRMSE (fis, vldX vldY);图绘制([actY vldY])轴([0 (vldY)最小(vldY) -0.01最大长度(vldY) + 0.13])包含(<年代pan style="color:#A020F0">“样本指数”)ylabel (<年代pan style="color:#A020F0">的信号值)标题(<年代pan style="color:#A020F0">“RMSE = 'num2str (rmse)])传说([<年代pan style="color:#A020F0">“实际产出”“预期的输出”),<年代pan style="color:#A020F0">“位置”,<年代pan style="color:#A020F0">“东北”)<年代pan style="color:#0000FF">结束

另请参阅

|<年代pan itemscope itemtype="//www.tatmou.com/help/schema/MathWorksDocPage/SeeAlso" itemprop="seealso">

相关的话题