亏着潘松找着了一本经典的讲TSK的电子书,亏着他打印了出来,亏着他带回了宿舍,亏着那天我也在,亏着我的求知精神还算足,亏着有老婆可以打印,亏着周日老妈霸占了电脑玩斗地主,亏着我无聊之际舍不得浪费时间……无数的巧合使我看了这本"Fuzzy Control Systems Design and Analysis",虽然开始只看了一章半(问题太多,看不下去了),但随后和潘兄的讨论使得我有了初步的概念,一篇用GA做TSK模糊模型辨识的文章让我终于了解了TSK。
下面来谈谈我对于mamdani和TSK之间不同的体会。
两者形式上最大的不同就是IF-THEN规则中THEN的部分。前者是用一个模糊变量来表示y,后者是用一个方程来表示y,典型的是用一个线性方程来表示。前者的优点是解释性好,符合人类思考的方式,后者的优点是精度高,在运行点附近用线性化的子系统来表示,可以做到和输入输出值高度的吻合。从这一点就不难看出,就标定参数而言,TSK模型更加方便,精确,易用,而mamdani模型标定起来则困难得多,尤其是想精度达到要求比较困难,可能要求隶属度函数形状可变,这很麻烦。
回过头来看看我前面的工作。采用的是mamdani模型,先利用经验初步给出了各变量的语言项和对应的隶属度函数类型(三角型)及取值范围,并且尽自己所能想象出了所有规则,再用实际采集的数据对隶属度函数的参数和规则权重参数进行GA优化。尽管采用了种种的改进方法,结果还是很难令人满意!
我看的那篇讲TSK模型辨识的文章上详尽的介绍了整个过程,虽然其中有些错误,但最终我还是理解了整个流程。它是从整个训练数据集出发先构建第零代TSK模型,再通过寻找最大非线性点,对训练数据集进行划分,再构建第一代TSK模型,细调后看是否满足终止条件,不满足则对其中一个划分再寻找最大非线性点,重复上面的过程,直到精度满足要求为止。这样得出的TSK模型对输入输出数据的拟合程度自然很好,唯一让我顾虑的是每个运行点处的线性方程如何解释的问题了。
早上去图书馆借了三本书,一本讲嵌入式Linux程序设计与应用,另外两本是Donald E. Knuth的"The Art of Computer Programming"的第四卷的三、四两册,借来没事翻翻~~:)不过挎包忘在存包处了,早上没法编TSK辨识的程序了,中午吃饭的时候去拿,下午再编,准备用m语言来实现,这样方便矩阵的运算,也不一定用matlab,scilab也可以运行m文件嘛~
2007年11月28日星期三
订阅:
博文评论 (Atom)
没有评论:
发表评论