主要内容

优化模糊树

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

  • 学习并调整树中fis的规则。

  • 了解树中fis的MF参数。

创建FIS树模型 x + 因为 x 经验值 x ,如下图所示。有关创建FIS树的更多信息,请参见模糊树

创建fis1作为sugeno型FIS,与Mamdani系统相比,由于其计算效率高的去模糊方法,导致更快的调优过程。添加两个输入,都有范围[0,10]和三个mf。使用平滑的、可微分的MF,例如gaussmf,以匹配您正在建模的数据类型的特征。

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

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

[-1.5 1.5],“NumMFs”9);

创建fis2作为sugeno型FIS。添加两个输入。将第一个输入的范围设置为[-1.5,1.5],这与的输出范围相匹配fis1.第二个输入与的输入相同fis1.因此,请使用相同的输入范围[0,10]。为每个输入添加三个mf。

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

添加一个范围为[0,1]和9个mf的输出。输出范围是根据可能的值来设置的 x + 因为 x 经验值 x

[0, 1], [0, 1],“NumMFs”9);

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

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

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

[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,选项);
Best Mean Stall Iteration f-count f(x) f(x) Iterations 0 100 0.6682 0.9395 0 1 200 0.6682 1.023 02 300 0.6652 0.9308 0 3 400 0.6259 0.958 0 4 500 0.6259 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细化网格20 469 0.44051 - 4成功调查21 521 0.44051 - 2Refine Mesh 22 542 0.435381 4 Successful Poll 23 594 0.435381 2 Refine Mesh 24 614 0.398872 4 Successful Poll 25 662 0.398385 8 Successful Poll 26 698 0.398385 4 Refine Mesh最大迭代次数超过:增加选项。

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

或者,您可以在FIS树中分别优化特定的模糊系统。对于本例,在学习了FIS树的规则库后,分别对fis1fis2参数。

要获取FIS树中FIS的参数设置,请使用getTunableSettings,指定FIS名称。首先,获取的参数设置fis1

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

调整的参数fis1

rng (“默认”) / /输入/ /输入/ /输入/ /输入
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 10 178 0.491534 - 4成功的213年调查11日0.491534 - 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细化网格调查21 495 0.445938 461 0.445938 - 4成功2 Refine Mesh 22 560 0.422421 4 Successful Poll 23 594 0.422421 2 Refine Mesh 24 597 0.397265 4 Successful Poll 25 630 0.397265 2 Refine Mesh 26 701 0.390338 4 Successful Poll超过的最大迭代数:增加选项。

在这种情况下,优化成本通过只调优fis1参数值。

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

[,,规则]= getTunableSettings (fisTout2,“金融中间人”“fis2”);rng (“默认”) / /输入/ /输入/ /输入/ /输入
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成功调查10 112 0.349356 - 4细化网格11 138 0.346102 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 21 366 0.340554 0.340554 - 4细化网格Refine Mesh 22 427 0.337873 4 Successful Poll 23 457 0.337873 2 Refine Mesh 24 521 0.33706 4 Successful Poll 25 551 0.33706 2 Refine Mesh 26 624 0.333193 4 Successful Poll超过的最大迭代数:增加选项。

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

[,,规则]= getTunableSettings (fisTout3);rng (“默认”) / /输入/ /输入/ /输入/ /输入/ /输入/ /输入/ /输入
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细化网格10 478 0.32578 - 4成功的528年调查11日0.32578 - 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 - 2Successful Poll 22 1369 0.228441 4 Successful Poll 23 1381 0.227645 8 Successful Poll 24 1407 0.226125 16 Successful Poll 25 1407 0.226125 8 Refine Mesh 26 1447 0.226125 4 Refine Mesh Maximum number of iterations exceeded: increase options.MaxIterations.

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

另请参阅

|

相关的话题