MATLAB离线模糊控制表生成步骤
第一步:MATLAB命令行中输入“fuzzy”
第二步:选择偏差隶属度函数、论域、范围、模糊变量等。
第三步:选择偏差变化率隶属度函数、论域、范围、模糊变量等。
第四步:选择输出隶属度函数、论域、范围、模糊变量等。
模糊控制规则表(步进式加热炉燃烧过程智能控制策略及其应用)
第五步:按照模糊控制规则表添加规则。
最后保存“yanghzeng.fis”文件。
参考《步进式加热炉燃烧过程智能控制策略及其应用》32~34页进行模糊控制建模。
从“yanghzeng.fis”文件中提取模糊控制表,实际控制中应用。
% Table
a=readfis('yangzheng');
% 17为 e 的论域大小,-8~8共17个
% 13为 ec 的论域大小,-6~6共13个
% Ulist为模糊控制表
Ulist=zeros(17,13);
for i=1:17
for j=1:13
e (i)=-9+i;% 将1~17 变成 -8~8
ec(j)=-7+j;% 将1~13 变成 -8~8
Ulist(i,j)=evalfis([e(i),ec(j)],a);
end
end
%--------------------------------------------------------------------------%
% 获取模糊控制表
Ulist
%--------------------------------------------------------------------------%
% 测试
e = 40;
ec = 5;
%--------------------------------------------------------------------------%
em = 40;
ecm= 5;
um = 200;
EM =8; Ke=EM/em;
ECM=6; Kec=ECM/ecm;
UM =6; Ku=um/UM;
egrad=round(Ke*e);
if egrad> EM;egrad=EM;end
if egrad<-EM;egrad=-EM;end
E=egrad+EM+1;
ecgrad=round(Kec*ec);
if ecgrad>ECM;ecgrad=ECM;end
if ecgrad<-ECM;ecgrad=-ECM;end
EC=ecgrad+ECM+1;
rule = [ 5.4142 5.3557 5.3155 5.1658 5.0757 5.0188 4.7789 4.3334 3.8891 3.5692 3.1397 2.444 1.9903
5.339 5.3338 5.291 5.0465 4.5707 4.4888 4.2632 3.6773 3.3778 3.063 2.5135 1.9192 1.4531
5.3139 5.2791 5.2139 5.0194 4.5405 4.03 3.8185 3.3822 2.6474 2.2449 1.8102 1.1916 0.6536
5.1553 4.9028 4.8534 4.6484 4.1371 3.7538 3.4571 2.9699 2.2751 1.6242 1.0637 0.4119 -0.0121
4.9277 4.4331 4.2646 4.0716 3.5638 3.1049 2.7887 2.2806 1.6649 0.9845 0.3107 -0.2975 -0.8005
4.9494 4.4634 3.9776 3.7124 3.2728 2.5335 1.9966 1.5649 0.888 0.2396 -0.3898 -1.0639 -1.5404
4.4701 3.8909 3.5808 3.2882 2.7475 2.0981 1.4608 0.7897 0.1518 -0.4716 -1.1668 -1.8093 -2.2368
3.9287 3.4818 2.8249 2.507 2.0421 1.4297 0.7181 0.075 -0.5364 -1.2412 -1.8928 -2.5119 -3.0558
3.5692 3.1437 2.4179 1.7464 1.3221 0.634 0.001 -0.6322 -1.3204 -1.7452 -2.4171 -3.1426 -3.5682
3.0564 2.5122 1.8937 1.2419 0.5367 -0.074 -0.7172 -1.4292 -2.041 -2.5059 -2.824 -3.4812 -3.928
2.2364 1.8089 1.1665 0.4713 -0.1522 -0.79 -1.4607 -2.098 -2.7475 -3.2881 -3.5808 -3.8908 -4.47
1.5396 1.0627 0.3888 -0.2404 -0.8893 -1.5659 -1.9976 -2.5338 -3.273 -3.7126 -3.9776 -4.4634 -4.9493
0.7994 0.2967 -0.3115 -0.9854 -1.6657 -2.2814 -2.7897 -3.1058 -3.5642 -4.0721 -4.2653 -4.4331 -4.9277
0.0104 -0.4135 -1.0655 -1.6251 -2.2761 -2.9712 -3.4578 -3.7548 -4.1385 -4.6492 -4.8545 -4.9039 -5.1553
-0.6547 -1.1931 -1.8115 -2.2462 -2.6482 -3.3829 -3.8194 -4.0303 -4.541 -5.0203 -5.2144 -5.2796 -5.3144
-1.4525 -1.9183 -2.5135 -3.0627 -3.3772 -3.6778 -4.2632 -4.4886 -4.5711 -5.0468 -5.2913 -5.334 -5.3392
-1.9896 -2.4432 -3.1387 -3.5683 -3.8883 -4.3322 -4.7776 -5.0178 -5.0746 -5.1652 -5.3155 -5.3557 -5.4142 ];
U=rule(E,EC);
O=Ulist(E,EC);
u=round(Ku*U);
o=round(Ku*O);
%--------------------------------------------------------------------------%
隶属函数曲线的形状选取技巧:参考《加热炉钢温建模与炉温优化设定研究》52页。
专家建议参考《步进式加热炉燃烧过程智能控制策略及其应用》32~34页。
被控对象滞后性大,控制周期调节频繁会造成被控对象震荡现象,严重造成设备损坏、停产。
温度属于外环控制,外环控制周期设置30~60s,流量属于内环控制,内环控制周期设置1s。符合外环惰性、内环灵敏的特性。串级本身就是为了解决大惯性、大滞后而设计。如果想要控制更保险的话,模糊控制可以结合专家建议。
隶属函数曲线越陡峭越密集,控制灵敏度越高,相反,隶属函数曲线越平缓越稀松,控制稳定性越平缓。 在误差较大区域采用低分辨率的模糊集,在误差较小的区域采用较高分辨率的模糊集。
代码:
https://download.csdn.net/download/weixin_37928884/86730217
https://download.csdn.net/download/weixin_37928884/85149591