T-S模糊系统结论参数的MATLAB仿真研究(1)(2)
2014-06-15 01:11
导读:(1) 其中:t(k)为由辨识的模糊模型计算出的第k个采样时刻的输出值,α(k)为第k 个采样时刻的实际输出值,Q为总的采样次数。 在进行选择操作时,是按

(1) 其中:t(k)为由辨识的模糊模型计算出的第k个采样时刻的输出值,α(k)为第k 个采样时刻的实际输出值,Q为总的采样次数。 在进行选择操作时,是按照适应度越大,被选择的概率越大,所以,这里选用的适应度函数为:

(2) 其中ε是一个较小的正实数,目的是为了避免除数为零的情况发生[3]。其主要代码如下:for i=1:1:Size %以下为初始筛选 cansu=Kpar(i,:); code=cansu; rmse=computeitae(code);%计算均方误差; BsJ=rmse; BsJi(i)=BsJ;%将均误差赋给BsJi end fi=1./BsJi;% 求适应度的值 [Oderfi,Indexfi]=sort(fi)%对适应度值由小到大排列 sortrsa=Kpar(Indexfi(Size),:); for s=2:1:selectsize shuijirsa=Kpar(Indexfi(Size-s 1),:); sortrsa=[sortrsa shuijirsa]; end sortrsa Kpar=sortrsa Size=selectsize 遗传操作一般包括选择,交叉和变异。选择方法采用蒙特卡罗法,按比例的适应度分配。若某个个体i ,其适应度为f
i , 则其被选择的概率表示为:

(3) 由于在进行遗传操作前,已经对个体进行了初步的筛选,所以为了避免对种群中优良个体的破坏,这里采用单点交叉的方法,随机选择交叉点之后,将两个个体的交叉点后面的基因进行交换。变异采用实值变异的方法,随机选择染色体的某个基因,由于用实数编码的方法,每个基因就是一个要辨识的参数值,所以可以用一个函数实现在参数范围内适当改变该参数值的大小,从而达到保持种群多样性的目的。为了使寻优不过早的收敛到次优解,随着进化代数的增加,需要适当增大变异率,其实现方法只需用一个函数来表示变异率:
pm=0.1 [1:1:G]×0.1/G (4) 式中:
pm表示变异率,G代表进化代数。[1:1:G]表示一个数组,变化的范围为[1,G],步长为1。为了避免破坏优良个体,变异率不宜取的过大。通过实验得知,在第一代时,可取变异率
pm=0.1 1×0.1/G,第二代时,变异率
pm=0.1 2×0.1/G,以此类推。这样随着进化代数的增加,
pm也随着增加。 另外,为了防止遗传操作对最优个体的破坏,采取保留最优个体的方法。将每一代产生的最优个体放在该种群的最后,再继续进行下一代的操作。整个算法的流程图如图1所示。具体实现的遗传操作的主要代码如下:G=300;%进化的代数BsJ=0;for kg=1:1:G time(kg)=kg; %*******step 1:计算误差**************** for i=1:1:Size cansu1=Kpar(i,:); selectcode=cansu1; error=computeitae(selectcode);%计算均方误差; BsJ1=error; BsJi1(i)=BsJ1; end [OderJi,IndexJi]=sort(BsJi1); BestJ(kg)=OderJi(1); BJ=BestJ(kg); Ji=BsJi1 1e-10;%避免除零 fi=1./Ji;% 求适应度的值共2页: 1 [2] 下一页 论文出处(作者):
(转载自http://www.NSEAC.com中国科教评价网) 一种基于DEVS的虚拟实验系统研究
MIME邮件格式分析及信息提取