主要内容

优化模糊树

这个例子展示了如何调优参数FIS树使用一个两步的过程。有关类似的两步过程的更多信息,请参阅调优模糊推理系统

  • 学习和调优规则费斯的树。

  • 学习的MF参数费斯在树上。

创建一个FIS树模型 ( x ) + 因为 ( x ) 经验值 ( x ) 如下图所示。创建FIS树木的更多信息,见模糊树

创建fis1Sugeno-type FIS,导致更快的优化过程Mamdani系统相比,由于其计算效率去模糊化方法。添加两个输入,两个范围(0,10)和三个MFs。使用一个光滑、可微的MF,如gaussmf,来匹配你建模的数据类型的特点。

fis1 = sugfis (“名字”,“fis1”);fis1 = addInput (fis1 [0 10],“NumMFs”3,“MFType”,“gaussmf”);fis1 = addInput (fis1 [0 10],“NumMFs”3,“MFType”,“gaussmf”);

添加一个输出范围[-1.5,1.5]有九MFs对应9个可能的输入MF组合。这样做提供最大粒度FIS规则。设置输出范围的可能值 ( x ) + 因为 ( x )

fis1 = addOutput (fis1 (-1.5 - 1.5),“NumMFs”9);

创建fis2Sugeno-type FIS。添加两个输入。第一个输入的范围设置为[-1.5,1.5],匹配的输出的范围fis1。第二次输入的输入是一样的fis1。因此,使用相同的输入范围,[0,10]。添加三个MFs的每个输入。

fis2 = sugfis (“名字”,“fis2”);fis2 = addInput (fis2, (-1.5 - 1.5),“NumMFs”3,“MFType”,“gaussmf”);fis2 = addInput (fis2, (10 0),“NumMFs”3,“MFType”,“gaussmf”);

添加一个输出区间[0,1]和九MFs。输出设置可能值的范围 ( x ) + 因为 ( x ) 经验值 ( x )

fis2 = addOutput (fis2 [0, 1],“NumMFs”9);

连接输入和输出如图所示。第一个输出的fis1,output1,连接到第一个输入的fis2,input1。的输入fis1相互连接,第二个输入的fis1连接到第二个输入fis2

con1 = [“fis1 / output1”“fis2 / input1”];con2 = [“fis1 / input1”“fis1 / input2”];con3 = [“fis1 / input2”“fis2 / input2”];

最后,创建一个FIS树使用指定的费斯和连接。

拳头= fistree ([fis1 fis2], [con1; con2; con3]);

添加一个额外的输出到FIS树访问的输出fis1

的拳头。输出= [“fis1 / output1”fisT.Outputs);

生成输入和输出训练数据。

x = (0:0.1:10)”;日元= sin (x) + cos (x);y2 = y1. / exp (x);y = (y1 y2);

调优FIS树参数两个步骤。首先,学习的规则FIS树使用全局优化方法。对于这个示例,使用粒子群。

选择= tunefisOptions (“方法”,“particleswarm”,“OptimizationType”,“学习”);

这个调优步骤使用少量的迭代学习规则库,而不过度拟合训练数据。规则库提供一个受过教育的初始条件,第二步可以用来优化一起FIS树参数。设置最大迭代数到5,和学习规则库。

options.MethodOptions。MaxIterations = 5;rng (“默认”)%的再现性fisTout1 = tunefis(拳头,[],x, y,选项);
最好是停止迭代f-count f (x) f (x)迭代0 0 1 200 100 0.6682 0.9395 0.6652 0.6682 - 1.023 300 0 2 0 3 0 4 500 400 0.6259 0.958 0.6259 0.9308 0.918 - 1 5 600 0.5969 - 0.9179 0优化结束:迭代次数超过OPTIONS.MaxIterations。

接下来,调整所有FIS树参数,使用当地的优化方法。对于这个示例,使用模式搜索。局部优化通常是速度比全局优化,可以产生更好的结果时,输入模糊系统参数已经与训练数据一致。

使用patternsearch优化的方法。将迭代次数设置为25。

选项。方法=“patternsearch”;options.MethodOptions。MaxIterations = 25;

使用getTunableSettings获取输入、输出和规则参数设置FIS的树。

[,,规则]= getTunableSettings (fisTout1);

参数调优FIS树。

rng (“默认”)%的再现性fisTout2 = tunefis (fisTout1(;;规则),x, y,选项);
Iter Func-count f (x) MeshSize方法0.596926 0 1 1 1 3 0.551284 - 2成功的调查2 13 0.548551 - 4成功的调查3 20 0.546331 8成功调查4 33 0.527482 16成功调查5 33 0.527482 8细化网格6 61 0.511532 16成功调查7 61 0.505355 0.511532 8细化网格8 92 16成功调查9 92 0.505355 8细化网格10 128 0.505355 4细化网格11 175 0.487734 8成功调查12 212 0.487734 265 0.487734 - 2细化网格细化网格13 328 0.486926 275 0.486926 - 4成功调查15 2细化网格16 339 0.483683 - 4成功调查17 391 0.483683 - 2细化网格18 410 0.442624 - 4成功调查19 462 0.442624 - 2细化网格521 0.44051 469 0.44051 - 4成功调查21 2细化网格22 542 0.435381 - 4成功调查23 594 0.435381 - 2细化网格24 614 0.398872 4成功调查25 662 0.398385 698 0.398385 - 4成功调查26细化网格最大迭代次数超过:增加options.MaxIterations。

优化降低成本从0.60到0.40在第二步。

或者,您可以调整特定的模糊系统分别在FIS的树。对于这个示例,学习FIS树的规则库后,单独调整fis1fis2参数。

获取参数设置在FIS FIS的树,使用getTunableSettings,指定FIS的名字。首先,得到的参数设置fis1

[,,规则]= getTunableSettings (fisTout1,“金融中间人”,“fis1”);

优化的参数fis1

rng (“默认”)fisTout2 = tunefis (fisTout1(;;规则),x, y,选项);
Iter Func-count f (x) MeshSize方法0.596926 0 1 1 1 3 0.551284 - 2成功的调查2 18 0.510362 - 4成功的调查3 28 0.494804 8成功调查4 56 0.494804 4细化网格5 84 0.493422 107成功调查6 0.492883 16成功调查7 107 0.492883 8细化网格8 136 0.492883 171 0.492883 - 2细化网格细化网格9 213 0.491534 178 0.491534 - 4成功调查11 2细化网格264 0.482682 229 0.482682 - 4成功调查13 2细化网格313 0.446645 279 0.446645 - 4成功调查15 2细化网格16 330 0.44657 - 4成功调查17 364 0.44657 - 2细化网格18 384 0.446495 - 4成功调查19 418 0.446495 - 2细化网格495 0.445938 461 0.445938 - 4成功调查21 2细化网格22 560 0.422421 - 4成功调查23 594 0.422421 - 2细化网格24 597 0.397265 - 4成功调查25 630 0.397265 - 2细化网格26 701 0.390338 - 4成功调查最大迭代次数超过:增加options.MaxIterations。

在这种情况下,优化成本只是提高了调优fis1参数值。

接下来,获取的参数设置fis2和调优fis2参数。

[,,规则]= getTunableSettings (fisTout2,“金融中间人”,“fis2”);rng (“默认”)fisTout3 = tunefis (fisTout2(;;规则),x, y,选项);
Iter Func-count f (x) MeshSize方法0.390338 0 1 1 1 2 0.374103 - 2成功的调查2 5 0.373855 4成功调查3 10 0.356619 8成功调查4 33 0.356619 4细化网格5 43 0.350715 8成功调查6 65 0.349417 16成功调查7 65 0.349417 8细化网格91 0.349356 87 0.349417 - 4完善网9 8成功调查138 0.346102 112 0.349356 - 4细化网格11 8成功调查172 0.345938 159 0.346102 - 4细化网格13 8成功调查222 0.342721 193 0.345938 - 4细化网格15 8成功调查16 244 0.342721 275 0.342721 - 2细化网格细化网格17 18 283 0.340727 - 4成功调查19 312 0.340554 8成功调查20 335 0.340554 366 0.340554 - 2细化网格细化网格21 22 427 0.337873 - 4成功调查23 457 0.337873 - 2细化网格24 521 0.33706 - 4成功调查25 551 0.33706 - 2细化网格26 624 0.333193 - 4成功调查最大迭代次数超过:增加options.MaxIterations。

通过调优的优化成本进一步降低fis2参数值。为了避免过度拟合的个人FIS参数值,可以进一步优化的fis1fis2参数在一起。

[,,规则]= getTunableSettings (fisTout3);rng (“默认”)fisTout4 = tunefis (fisTout3(;;规则),x, y,选项);
Iter Func-count f (x) MeshSize方法0.333193 0 1 1 1 8 0.326804 - 2成功的调查2 91 0.326432 - 4成功调查3 116 0.326261 8成功调查4 154 0.326261 205 0.326261 - 2细化网格细化网格5 6 302 0.326092 - 4成功调查7 352 0.326092 - 2细化网格441 0.325964 391 0.325964 - 4成功调查9 2细化网格528 0.32578 478 0.32578 - 4成功调查11 2细化网格612 0.325691 562 0.325691 - 4成功调查13 2细化网格763 0.229273 713 0.229273 - 4成功调查15 2细化网格16 867 0.22891 - 4成功调查17 917 0.22891 - 2细化网格18 1036 0.228688 - 4成功调查19 1086 0.228688 1212 0.228688 - 1细化网格细化网格20 21 1266 0.228445 - 2成功的调查22 1369 0.228441 - 4成功调查23 1381 0.227645 1407 0.226125成功的调查24 16成功调查25 1407 0.226125 1447 0.226125 - 4细化完善网26日网最大迭代次数超过:增加options.MaxIterations。

总的来说,在使用三个调优步骤优化成本小于使用后只有一个。

另请参阅

|

相关的话题