MATLAB离线模糊控制表生成以及模糊控制程序编写

34 篇文章 1 订阅

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

  • 6
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Matlab中,可以通过将模糊规则导出和绘制成格的方法来观察和分析模糊控制系统的规则。下面是一个简单的实例来说明如何完成这个任务。 第一步是创建一个模糊控制系统对象,并设置其输入和输出变量。例如,我们可以创建一个有两个输入变量和一个输出变量的模糊控制器: ```matlab fis = newfis('fis'); fis = addvar(fis, 'input', 'input1', [0 10]); fis = addvar(fis, 'input', 'input2', [0 5]); fis = addvar(fis, 'output', 'output', [0 15]); ``` 第二步是定义模糊集合和其隶属函数,以及创建模糊规则。例如,我们可以定义三个模糊集合(低、中、高)和三个隶属函数(三角形、高斯、高斯): ```matlab fis = addmf(fis, 'input', 'input1', 'low', 'trimf', [1 3 5]); fis = addmf(fis, 'input', 'input1', 'medium', 'gaussmf', [1 5]); fis = addmf(fis, 'input', 'input1', 'high', 'gaussmf', [1 7]); fis = addmf(fis, 'input', 'input2', 'low', 'trimf', [1 2 3]); fis = addmf(fis, 'input', 'input2', 'medium', 'gaussmf', [1 2]); fis = addmf(fis, 'input', 'input2', 'high', 'gaussmf', [1 4]); fis = addmf(fis, 'output', 'output', 'low', 'trimf', [1 5 10]); fis = addmf(fis, 'output', 'output', 'medium', 'gaussmf', [1 7]); fis = addmf(fis, 'output', 'output', 'high', 'gaussmf', [1 12]); ``` 第三步是定义模糊规则。例如,我们可以定义9个模糊规则: ```matlab ruleList = [1 1 1 1 1; 1 1 2 1 1; 1 1 3 1 1; 2 1 1 1 1; 2 1 2 1 1; 2 1 3 1 1; 3 1 1 1 1; 3 1 2 1 1; 3 1 3 1 1]; fis = addrule(fis, ruleList); ``` 最后一步是将模糊规则导出并绘制成格: ```matlab ruleTable = showrule(fis); disp(ruleTable); ``` 运行上述代码后,将得到一个包含模糊规则格输出。该格中的每一行示一个模糊规则,每一列示原始输入、处理后的输入和输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨铮...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值