这个例子比较2型模糊PID控制器与第一型模糊PID控制器和常规PID控制器。这个例子是改编自[1]。
这个示例使用以下模糊逻辑控制器(方法[1]中描述的结构。控制器的输出( 使用错误(发现) )和误差的导数( )。使用缩放因子 和 ,输入 和 被归一化 和 ,分别。归一化范围的输入范围内[1]。模糊逻辑控制器也会产生一个规范化的输出范围内[1]。额外的扩展的因素 和 地图模糊逻辑控制器的输出 成 。
这个示例使用延迟的一阶系统 随着植物模型。
在这里, , , 获得,延时,时间常数,分别。
缩放因子 , , 定义如下,在哪里 闭环时间常数。
输入比例因子 是:
在哪里 和 参考和系统输出值在时间吗 。这些值对应于系统的名义操作点。
这个例子比较1型和2型Sugeno模糊推理系统的性能(费斯)使用模糊逻辑控制器仿真软件®块。金宝app
创建一个使用1型金融中间人sugfis
。
fis1 = sugfis;
将输入变量添加到金融中间人。
fis1 = addInput (fis1 [1],“名字”,“E”);fis1 = addInput (fis1 [1],“名字”,“删除”);
添加三个均匀分布重叠的三角形隶属度函数(MFs)每个输入。MF的名称负(N
),零(Z
),积极的(P
)。
fis1 = addMF (fis1,“E”,“trimf”(2 1 0),“名字”,“N”);fis1 = addMF (fis1,“E”,“trimf”(1 0 1),“名字”,“Z”);fis1 = addMF (fis1,“E”,“trimf”[0 1 2],“名字”,“P”);fis1 = addMF (fis1,“删除”,“trimf”(2 1 0),“名字”,“N”);fis1 = addMF (fis1,“删除”,“trimf”(1 0 1),“名字”,“Z”);fis1 = addMF (fis1,“删除”,“trimf”[0 1 2],“名字”,“P”);
输入隶属函数。
图次要情节(1、2、1)plotmf (fis1,“输入”1)标题(输入1的次要情节(1、2、2)plotmf (fis1,“输入”2)标题(“输入2”)
输出变量添加到金融中间人。
fis1 = addOutput (fis1 [1],“名字”,“U”);
添加均匀分布常数
函数的输出。MF的名称-大(注
),消极的媒介(纳米
),零(Z
),积极的媒介(点
),积极的大(PB
)。
fis1 = addMF (fis1,“U”,“不变”,1“名字”,“注”);fis1 = addMF (fis1,“U”,“不变”,-0.5,“名字”,“纳米”);fis1 = addMF (fis1,“U”,“不变”0,“名字”,“Z”);fis1 = addMF (fis1,“U”,“不变”,0.5,“名字”,“点”);fis1 = addMF (fis1,“U”,“不变”,1“名字”,“铅”);
添加规则,金融中间人。这些规则创建一个比例控制表面。
规则= […“E = = N &删除= = = > U = NB”;…Z &删除“E = = = = N = > U = NM”;…“E = = P &删除= = N = > U = Z”;…“E = = N &删除Z = = = > U = NM”;…Z Z &删除“E = = = = = > U = Z”;…“E = = P &删除Z = = = > U =点”;…“E = = N &删除= = P = > U = Z”;…Z &删除“E = = = = P = > U =点”;…“E = = P &删除= = = > U = PB”…];fis1 = addRule (fis1、规则);
阴谋控制表面。
图gensurf (fis1)标题(1型FIS的控制面)
把1型金融中间人,fis1
2型金融中间人。
fis2 = convertToType2 (fis1);
2型Sugeno系统,fis2
使用2型隶属度函数的输入变量和1型隶属度函数为输出变量。
定义的不确定性的足迹(4)中定义的输入MFs [1]。为此,设置较低的为每个MF MF比例因子。对于这个示例,曼氏金融滞后值越低0
。
规模= (0.3 0.2 0.9 - 0.2,0.3 - 0.9);为i = 1:长度(fis2.Inputs)为j = 1:长度(fis2.Inputs(我).MembershipFunctions) fis2.Inputs (i) .MembershipFunctions (j)。LowerLag = 0;fis2.Inputs (i) .MembershipFunctions (j)。LowerScale =规模(i, j);结束结束
情节2型输入隶属函数。
图次要情节(1、2、1)plotmf (fis2,“输入”1)标题(输入1的次要情节(1、2、2)plotmf (fis2,“输入”2)标题(“输入2”)
FIS的傻人增加了额外的不确定性并产生一个非线性控制表面。
图gensurf (fis2)标题(2型FIS的控制面)
这个例子比较了模糊逻辑控制器的性能与以下常规PID控制器。
在这里, 获得成正比, 积分器得到, 微分增益, 是微分滤波器时间常数。
定义名义植物模型。
C = 0.5;L = 0.5;T = 0.5;G =特遣部队(C T [1]“Outputdelay”L);
生成使用常规PID控制器参数pidtune
。
pidController = pidtune (G,“pidf”);
在这个例子中,引用( 是信号和步 ,从而导致 如下。
= 1。
Ce = 1;
配置模拟,使用下面的标称控制器参数。
tauC = 0.2;Cd = min (T、L / 2) * Ce;C0 = 1 / (C * * (tauC + L / 2));C1 = max (T、L / 2) * C0;
模拟控制器,使用comparepidcontrollers
金宝app仿真软件模型。
模型=“comparepidcontrollers”;load_system(模型)
模拟模型的名义操作条件。
着干活= sim(模型);
绘制系统的阶跃响应为所有三个控制器。
plotTitle = [的名义:C = 'num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput(着干活,plotTitle)
得到系统的阶跃响应特性为每个控制器。在这里,上升时间和稳定时间是在几秒钟内,过度是最终值的百分比,绝对误差是集成在阶跃响应。
stepResponseTable(着干活)
ans =3×4表上升时间过度沉淀时间绝对误差替PID _________________ * * * 0.62412 11.234 4.5583 1.04 1型方法1.4267 0 0 5.129 - 1.282 4.1023 - 1.1522 1.8662 2型方法
的名义过程:
1型和2型模糊逻辑控制器比传统PID控制器超调。
传统的PID控制器,执行更好的上升时间和积分绝对误差(IAE)。
1型方法执行比2型方法上升时间、沉淀时间、管理学院。
修改植物模型通过增加收益,时间延迟,时间常数的值比名义的过程。
C = 0.85;L = 0.6;T = 0.6;G =特遣部队(C T [1]“Outputdelay”L);
使用更新后的植物模拟模型参数。
out2 = sim(模型);
绘制系统的阶跃响应为所有三个控制器。
plotTitle = [修改1:C =”num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput (out2 plotTitle)
得到系统的阶跃响应特性为每个控制器。
stepResponseTable (out2)
ans =3×4表上升时间过度沉淀时间绝对误差替PID _________________ * * * 0.38464 80.641 29.458 4.7486 1型方法0.47262 22.787 3.4561 1.076 0.47262 24.877 4.6788 1.1137 2型方法
对于这个修改过程:
传统的PID控制器展品显著的过度,较大的沉淀时间,和更高的IAE而模糊逻辑控制器
性能的措施,2型方法产生相同或更高的性能相比1型方法。
总的来说,1型方法为名义植物生产性能优越比传统的PID控制器。2型的方法显示了修改后的植物更健壮的性能。
传统的PID控制器的鲁棒性可以提高使用不同的方法,如预测或多个PID控制器配置。另一方面,2型方法的性能可以通过使用不同的改进:
规则库
的规则数量
傻人
例如,您可以创建一个2型方法,定义了傻人使用较低的MF比例因子和更低的曼氏金融滞后。
为fis2
,规模和曼氏金融滞后值越低0.7
和0.1
分别对所有输入隶属函数。
为i = 1:长度(fis2.Inputs)为j = 1:长度(fis2.Inputs(我).MembershipFunctions) fis2.Inputs (i) .MembershipFunctions (j)。LowerScale = 0.7;fis2.Inputs (i) .MembershipFunctions (j)。LowerLag = 0.1;结束结束
绘制更新隶属度函数。
图次要情节(1、2、1)plotmf (fis2,“输入”1)标题(输入1的次要情节(1、2、2)plotmf (fis2,“输入”2)标题(“输入2”)
使用名义,模拟模型和情节的一步反应控制器。
C = 0.5;L = 0.5;T = 0.5;G =特遣部队(C T [1]“Outputdelay”L);out4 = sim(模型);close_system(模型中,0)plotTitle = [的名义:C = 'num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput (out4 plotTitle)
得到系统的阶跃响应特性为每个控制器。
stepResponseTable (out4)
ans =3×4表上升时间过度沉淀时间绝对误差替PID _________________ * * * 0.62412 11.234 4.5583 1.04 1型方法1.4267 0 0 3.8746 - 1.1087 4.1023 - 1.1522 1.2179 2型方法
在这种情况下,更新的傻人2型方法提高了上升的阶跃响应。
然而,较低的曼氏金融滞后值也增加过度的修改后的植物。
C = 0.85;L = 0.6;T = 0.6;G =特遣部队(C T [1]“Outputdelay”L);out5 = sim(模型);plotTitle = [的名义:C = 'num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput (out5 plotTitle)
t = stepResponseTable (out5)
t =3×4表上升时间过度沉淀时间绝对误差替PID _________________ * * * 0.38464 80.641 29.458 4.7486 1型方法0.47262 26.699 4.6812 1.1278 0.47262 24.877 4.6788 1.1137 2型方法
因此,获得理想的阶跃响应特性,您可以改变降低规模和曼氏金融滞后值来找到一个合适的组合。
可以进一步改善模糊逻辑控制器输出使用一种Mamdani FIS,因为它还提供了较低的规模和曼氏金融滞后参数输出隶属度函数。然而,Mamdani 2型方法引入了额外的计算延迟由于昂贵type-reduction过程。
[1]孟德尔,j . M。不确定的基于规则的模糊系统:介绍和新的方向,第二版,施普林格,2017年,页229 - 234,600 - 608。
函数plotOutput情节(plotTitle),图(20 [0],[1])在情节(out.yout {1} . values)情节(out.yout {2} . values)情节(out.yout {3} . values)从网格小包含(的时间(秒))ylabel (“输出”标题(plotTitle)传说([“参考”,“PID”,“1型方法”,“2型方法”),“位置”,“最佳”)结束
函数t = stepResponseTable () = stepinfo (out.yout {1} .Values.Data, out.yout {1} .Values.Time);stepResponseInfo (1)。上升时间= s.RiseTime;stepResponseInfo (1)。过度= s.Overshoot;stepResponseInfo (1)。SettlingTime = s.SettlingTime;stepResponseInfo (1)。IAE = out.yout {4} .Values.Data(结束);s = stepinfo (out.yout {2} .Values.Data, out.yout {2} .Values.Time); stepResponseInfo(2).RiseTime = s.RiseTime; stepResponseInfo(2).Overshoot = s.Overshoot; stepResponseInfo(2).SettlingTime = s.SettlingTime; stepResponseInfo(2).IAE = out.yout{5}.Values.Data(end); s = stepinfo(out.yout{3}.Values.Data,out.yout{3}.Values.Time); stepResponseInfo(3).RiseTime = s.RiseTime; stepResponseInfo(3).Overshoot = s.Overshoot; stepResponseInfo(3).SettlingTime = s.SettlingTime; stepResponseInfo(3).IAE = out.yout{6}.Values.Data(end); t = struct2table(stepResponseInfo,“RowNames”,(“PID”“1型方法”“2型方法”]);t.Properties。VariableNames {1} =的上升时间;t.Properties。VariableNames {2} = t.Properties.VariableNames {2};t.Properties。VariableNames {3} =“沉淀时间”;t.Properties。VariableNames {4} =的绝对误差;结束