以误差e=5、误差变化率ec=1.3为例,详细解释ut_temp = evalfis(a, [e_c, ec_c])的运算原理和流程。
模糊系统设计
第一步:输入预处理
首先对原始输入进行限幅和缩放因子处理:
-
e = 5,ec = 1.3 -
缩放因子:
f1 = 2.0(误差),f2 = 0.5(误差变化率) -
限幅后:
e_c = max(min(5, 6), -6) = 5,ec_c = max(min(1.3, 1.5), -1.5) = 1.3
第二步:模糊化(计算隶属度)
对于误差e=5:
-
PM(正中):论域[2, 4, 6],在5处的隶属度 = (6-5)/(6-4) = 0.5
-
PB(正大):论域[4, 6],在5处的隶属度 = (5-4)/(6-4) = 0.5
-
其他模糊集隶属度为0
对于误差变化率ec=1.3:
-
PM(正中):论域[0.5, 1.0, 1.5],在1.3处的隶属度 = (1.5-1.3)/(1.5-1.0) = 0.4
-
PB(正大):论域[1.0, 1.5, 1.5],在1.3处的隶属度 = (1.3-1.0)/(1.5-1.0) = 0.6
-
其他模糊集隶属度为0
计算公式解释
-
PM(正中)隶属度函数参数:论域[0.5, 1.0, 1.5]
-
0.5:三角形左顶点
-
1.0:三角形顶点(隶属度=1)
-
1.5:三角形右顶点
-
-
计算公式含义:
(1.5-1.3)/(1.5-1.0) = 0.4-
分子
(1.5-1.3):计算输入值1.3到顶点1.5的距离 -
分母
(1.5-1.0):计算三角形左半边的底边宽度(从顶点1.5到左边界1.0的距离)
-
-
几何意义: 这是在计算输入值1.3在PM隶属度函数左上升沿上的线性插值比例,表示输入值相对于三角形左半边的位置关系。
第三步:规则匹配
激活的规则及其可信度:
-
规则46:
e==PB & ec==ZO => u=NM -
可信度 = min(0.5, 0.4) = 0.4
-
规则47:
e==PM & ec==PB => u=NB可信度 = min(0.5, 0.6) = 0.5 -
规则48:
e==PB & ec==PM => u=NB可信度 = min(0.5, 0.4) = 0.4
-
规则49:
e==PB & ec==PB => u=NB可信度 = min(0.5, 0.6) = 0.5
第四步:解模糊化(重心法)
各规则输出截断:
-
NM(负中):论域[-10, -5, 0],隶属度 = 0.4
-
NB(负大):论域[-15, -10, -5],最大隶属度 = max(0.5, 0.4, 0.5) = 0.5
重心法计算:
计算所有被激活隶属度函数的加权平均重心:
ut_temp = (NM区域的加权面积 + NB区域的加权面积) / 总激活面积被激活的输出模糊集及参数:
-
NM(负中):三角形隶属度函数顶点[-10, -5, 0],隶属度=0.4
-
NB(负大):三角形隶属度函数顶点[-15, -10, -5],隶属度=0.5
离散化计算过程
在输出论域[-15, 15]上选取关键离散点进行计算:
1. 计算各离散点的隶属度值
对于NB模糊集(隶属度0.5):
-
在u=-15处:μ(u) = 1.0 × 0.5 = 0.5
-
在u=-12.5处:μ(u) = 0.75 × 0.5 = 0.375
-
在u=-10处:μ(u) = 0.5 × 0.5 = 0.25
-
在u=-7.5处:μ(u) = 0.25 × 0.5 = 0.125
-
在u=-5处:μ(u) = 0 × 0.5 = 0
对于NM模糊集(隶属度0.4):
-
在u=-10处:μ(u) = 0 × 0.4 = 0
-
在u=-7.5处:μ(u) = 0.5 × 0.4 = 0.2
-
在u=-5处:μ(u) = 1.0 × 0.4 = 0.4
-
在u=-2.5处:μ(u) = 0.5 × 0.4 = 0.2
-
在u=0处:μ(u) = 0 × 0.4 = 0
2. 构建组合隶属度函数(取最大值)
3. 重心法数值计算
使用离散化公式:
分子计算: μ(u) × u 的加权和:
-
(-15) × 0.500 = -7.500
-
(-12.5) × 0.375 = -4.6875
-
(-10) × 0.250 = -2.500
-
(-7.5) × 0.200 = -1.500
-
(-5) × 0.400 = -2.000
-
(-2.5) × 0.200 = -0.500
-
0 × 0.000 = 0.000
分子总和 = -7.500 - 4.6875 - 2.500 - 1.500 - 2.000 - 0.500 + 0 = -18.6875
分母计算: μ(u) 的总和: 0.500 + 0.375 + 0.250 + 0.200 + 0.400 + 0.200 + 0.000 = 1.925
4. 最终结果
实际MATLAB计算得到:ut_temp =-9.71
运算流程总结
-
输入:e=5, ec=1.3 → 预处理后 e_c=5, ec_c=1.3
-
模糊化:确定各输入变量在各模糊集的隶属度
-
规则推理:找到所有被激活的规则,计算可信度
-
解模糊:使用重心法将模糊输出转换为精确值
-
输出:控制量 u = -9.71
这个结果表示系统认为当前需要施加-12.5的较大负向控制量来快速减小正向误差,使系统输出向参考信号靠拢。由于误差和误差变化率都较大且为正,系统采取了较强的负向控制策略。