FIS学习——利用Matlab创建模糊推理系统Ⅱ
参数标定
对于FIS中隶属度函数的确定或是模糊规则if-then的确定,一般都是凭借设计人员的经验来确定这些参数,参数包括隶属度函数的类型,函数中的参数,规则的确定。但人的经验在模糊的问题上起到的作用很小,很难去确定系统的准确性。
因此,有许多参数标定的方法可以被使用,这方面的论文也有蛮多。一般都是利用大量的数据集去训练模型,让模型学习到一个最佳的参数集合状态。还有一种就是在没有输入输出训练数据集的时候,自定义cost函数,通过评估输出的cost,来优化参数。
讲解一下案例的代码
%Remove leading and trailing whitespace from the attribute names.
[data,name] = loadgas;
name = strtrim(string(name)); %从属性名称中删除开头和结尾的空格
X = data(:,1:6);
Y = data(:,7);
trnX = X(1:2:end,:); %训练输入数据集
trnY = Y(1:2:end,:); %训练输出数据集
vldX = X(2:2:end,:); %验证输入数据集
vldY = Y(2:2:end,:); %验证输出数据集百分比
%提取每个数据属性的范围,将在FIS构建期间将其用于输入/输出范围定义。
dataRange = [min(data)'max(data)'];
%创建Mamdani FIS
fisin = mamfis;
for i = 1:6
fisin = addInput(fisin,dataRange(i,