主要内容

基于2型FIS的模糊PID控制

这个例子比较了2型模糊PID控制器与1型模糊PID控制器和常规PID控制器。这个例子改编自[1]。

模糊PID控制

这个例子使用[1]中描述的模糊逻辑控制器(FLC)结构。控制器的输出( u )使用错误( e )和误差的导数( e ˙ ).使用缩放因子 C e C d ,输入 e e ˙ 被归一化 E Δ E ,分别。两个输入的归一化范围都在[-1,1]范围内。模糊逻辑控制器也产生一个在[-1,1]范围内的归一化输出。额外的扩展的因素 C 0 C 1 映射模糊逻辑控制器输出 U u

这个例子使用一个延迟的一阶系统 G 年代 作为植物模型。

G 年代 C e - Ls Ts + 1

在这里, C l , T 分别为增益、时延、时间常数。

缩放因子 C d C 0 , C 1 定义如下,在哪里 τ c 为闭环时间常数。

C d 最小值 T l 2 × C e C 0 1 C × C e τ c + l 2 C 1 马克斯 T l 2 × C 0

输入比例因子 C e 是:

C e 1 r t r - y t r

在哪里 r t r y t r 参考值和系统输出值是否一致 t t r .这些值对应于系统的标称工作点。

这个例子比较了使用模糊逻辑控制器Simulink®块的1型和2型Sugeno模糊推理系统(FISs)的性能。万博1manbetx

构建1型金融中间人

使用命令创建type-1 FISsugfis

fis1 = sugfis;

向FIS添加输入变量。

[-1 1], [-1 1],“名字”“E”);[-1 1], [-1 1],“名字”“删除”);

为每个输入添加三个均匀分布的重叠三角隶属函数。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”

图中包含2个轴对象。标题为Input 1的轴对象1包含6个类型为line, text的对象。标题为Input 2的axis对象2包含6个类型为line, text的对象。

将输出变量添加到FIS中。

[-1 1], [-1 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,“名字”“铅”);

向FIS中添加规则。这些规则创建了一个比例控制面。

规则= [..."E==N & delE==N => U=NB"..."E==Z & delE==N => U=NM"..."E==P & delE==N => U=Z"..."E==N & delE==Z => U=NM"...E==Z & delE==Z => U=Z..."E==P & delE==Z => U=PM"..."E==N & E==P => U=Z"..."E==Z & delE==P => U=PM"..."E==P & delete E==P => U=PB"...];fis1 = addRule (fis1、规则);

绘制控制面。

图gensurf (fis1)标题(“1型FIS的控制面”

图中包含一个轴对象。类型为1 FIS的标题为Control surface的轴对象包含一个类型为surface的对象。

构建2型金融中间人

转换type-1 FIS,fis1,到2型FIS。

fis2 = convertToType2 (fis1);

2型Sugeno系统,fis2,输入变量使用类型2成员关系函数,输出变量使用类型1成员关系函数。

定义[1]中定义的输入MFs的不确定性足迹(FOU)。为此,为每个MF设置较低的MF比例因子。对于本例,设置较低的MF滞后值为0

尺度= [0.2 0.9 0.2;0.3 0.9 0.3];i = 1:长度(fis2.Inputs)j = 1:length(fis2.Inputs(i). membershipfunctions)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”

图中包含2个轴对象。标题为Input 1的轴对象1包含12个类型为line, patch, text的对象。这些对象表示UpperMF、LowerMF、FOU。标题为Input 2的axis对象2包含12个类型为line, patch, text的对象。这些对象表示UpperMF、LowerMF、FOU。

FOU为FIS增加了额外的不确定性,并产生了非线性控制面。

图gensurf (fis2)标题(“2型FIS控制面”

图中包含一个轴对象。具有2类FIS的标题Control surface的轴对象包含一个surface类型的对象。

传统的PID控制器

本实例比较了模糊逻辑控制器与常规PID控制器的性能。

PID 年代 K p + K 年代 + K d 年代 τ f 年代 + 1

在这里, K p 获得成正比, K 积分器得到, K d 是导数增益,和 τ f 为导数滤波器时间常数。

配置模拟

定义标称植物模型。

C = 0.5;L = 0.5;T = 0.5;C = tf(C,[t1],“Outputdelay”L);

利用常规PID控制器的参数生成pidtune

pidController = pidtune (G,“pidf”);

在本例中,引用( r 是阶跃信号和 t r 0 ,其结果是 C e 1 如下。

C e 1 r t r - y t r 1 1 - 0 = 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万博1manbetx仿真软件模型。

模型=“comparepidcontrollers”;load_system(模型)

名义上的流程进行模拟

在名义运行条件下模拟模型。

着干活= sim(模型);

绘制所有三个控制器的系统的阶跃响应。

plotTitle = [的名义:C = 'num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput(着干活,plotTitle)

图中包含一个轴对象。标题为标称:C=0.5, L=0.5, T=0.5的轴对象包含4个类型为line的对象。这些对象表示Reference、PID、Type-1 FLC、Type-2 FLC。

获得每个控制器的系统阶跃响应特性。这里,上升时间和稳定时间以秒为单位,超调量是最终值的百分比,绝对误差是在阶跃响应上积分的。

stepResponseTable(着干活)
ans =3×4表上升时间超调稳定时间绝对误差_________ _________ _____________ ______________ PID 0.62412 11.234 4.5583 1.04 Type-1 FLC 1.4267 0 4.1023 1.1522 Type-2 FLC 1.8662 0 5.129 1.282

对于标称过程:

  • 一类模糊控制器和二类模糊控制器在超调性能上均优于传统PID控制器。

  • 传统PID控制器在上升时间和绝对误差积分方面有较好的性能。

  • 1型FLC在上升时间、沉降时间和IAE方面优于2型FLC。

修改流程进行模拟

与标称过程相比,通过增加增益、时间延迟和时间常数值来修改被试模型。

C = 0.85;L = 0.6;T = 0.6;C = tf(C,[t1],“Outputdelay”L);

使用更新的植物参数模拟模型。

out2 = sim(模型);

绘制所有三个控制器的系统的阶跃响应。

plotTitle = [修改1:C =”num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput (out2 plotTitle)

图中包含一个轴对象。标题为Modified 1的轴对象:C=0.85,L=0.6,T=0.6包含4个类型为line的对象。这些对象表示Reference、PID、Type-1 FLC、Type-2 FLC。

获得每个控制器的系统阶跃响应特性。

stepResponseTable (out2)
ans =3×4表上升时间超调稳定时间绝对误差_________ _________ _____________ ______________ PID 0.38464 80.641 29.458 4.7486 Type-1 FLC 0.47262 24.877 4.6788 1.1137 Type-2 FLC 0.47262 22.787 3.4561 1.076

对于这个修改的过程:

  • 与模糊控制器相比,传统PID控制器表现出明显的超调量、更大的稳定时间和更高的IAE

  • 对于所有性能衡量,2型FLC产生相同或优于1型FLC的性能。

结论

总的来说,与传统PID控制器相比,1型FLC对标称装置产生了优越的性能。2型FLC在改良后的工厂中表现出更稳健的性能。

常规PID控制器的鲁棒性可以通过不同的方法来提高,如预测或多个PID控制器组态。另一方面,2型FLC的性能可以通过使用不同的:

  • 规则库

  • 的规则数量

  • 傻人

例如,您可以创建一个2型FLC,它使用较低的MF缩放因子和较低的MF滞后定义FOU。

fis2,设置较低的MF尺度和滞后值为0.70.1,分别用于所有输入成员函数。

i = 1:长度(fis2.Inputs)j = 1:length(fis2.Inputs(i). membershipfunctions)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”

图中包含2个轴对象。标题为Input 1的轴对象1包含12个类型为line, patch, text的对象。这些对象表示UpperMF、LowerMF、FOU。标题为Input 2的axis对象2包含12个类型为line, patch, text的对象。这些对象表示UpperMF、LowerMF、FOU。

使用标称对象模拟模型,并绘制控制器的阶跃响应。

C = 0.5;L = 0.5;T = 0.5;C = tf(C,[t1],“Outputdelay”L);out4 = sim(模型);close_system(model,0) = [/ cn]的名义:C = 'num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput (out4 plotTitle)

图中包含一个轴对象。标题为标称:C=0.5, L=0.5, T=0.5的轴对象包含4个类型为line的对象。这些对象表示Reference、PID、Type-1 FLC、Type-2 FLC。

获得每个控制器的系统阶跃响应特性。

stepResponseTable (out4)
ans =3×4表上升时间超调稳定时间绝对误差_________ _________ _____________ ______________ PID 0.62412 11.234 4.5583 1.04 Type-1 FLC 1.4267 0 4.1023 1.1522 Type-2 FLC 1.2179 0 3.8746 1.1087

在这种情况下,2型FLC的更新FOU改善了阶跃响应的上升时间。

然而,较低的MF滞后值也增加了转基因植物的超调量。

C = 0.85;L = 0.6;T = 0.6;C = tf(C,[t1],“Outputdelay”L);out5 = sim(模型);plotTitle = [的名义:C = 'num2str (C)”,L = 'num2str(左)”,T =”num2str (T)];plotOutput (out5 plotTitle)

图中包含一个轴对象。标题为标称的轴对象:C=0.85, L=0.6, T=0.6包含4个类型为line的对象。这些对象表示Reference、PID、Type-1 FLC、Type-2 FLC。

t = stepResponseTable (out5)
t =3×4表上升时间超调稳定时间绝对误差_________ _________ _____________ ______________ PID 0.38464 80.641 29.458 4.7486 Type-1 FLC 0.47262 24.877 4.6788 1.1137 Type-2 FLC 0.47262 26.699 4.6812 1.1278

因此,为了获得想要的阶跃响应特性,可以通过改变较低的MF尺度和滞后值来找到一个合适的组合。

您可以使用Mamdani型FIS进一步改进模糊逻辑控制器的输出,因为它也为输出隶属函数提供了更低的MF规模和滞后参数。然而,Mamdani -2型FLC由于昂贵的类型缩减过程引入了额外的计算延迟。

参考文献

孟德尔,j.m.,基于不确定规则的模糊系统:引入与新方向,第二版,施普林格,2017,页229-234,600-608。

本地函数

函数plot(out,plotTitle) figure plot([0 20],[1 1]) holdplot(out.yout{1}.Values) plot(out.yout{1}.Values网格包含(的时间(秒)) ylabel (“输出”标题(plotTitle)传说([“参考”“PID”“1型方法”“2型方法”],“位置”“最佳”结束
函数t = stepResponseTable(out) s = stepResponseTable(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} =的绝对误差结束

另请参阅

|

相关的话题