该示例中,类型2的模糊PID控制器既具有1型模糊PID控制器和常规的PID控制器进行比较。这个例子是适于从[1]。
此示例使用以下模糊逻辑控制器(FLC)的结构[1]中所述。控制器的输出( )使用错误( )和误差的导数( )。使用缩放因子 和 ,输入 和 标准化为 和 ,分别。两个输入的归一化范围都在[-1,1]范围内。模糊逻辑控制器也产生一个归一化输出在范围[-1,1]。额外的扩展的因素 和 映射模糊逻辑控制器输出 成 。
这个例子使用一个延迟的第一阶系统 作为植物模型。
这里, , 和 是增益,时延,和时间常数。
缩放因素 , 和 被定义如下,其中 是闭环时间常数。
输入比例因子 是:
哪里 和 是在时间参考和系统输出值 。这些值对应于所述系统的标称工作点。
本例使用模糊逻辑控制器Simulink®块比较了1型和2型Sugeno模糊推理系统(FISs)的性能。万博1manbetx
创建一个类型1的FIS使用sugfis
。
FIS1 = sugfis;
向FIS添加输入变量。
(1,[-1],'名称','E');(1,[-1],'名称','DELE');
添加三个均匀分布的重叠的三角形的隶属函数(MFS)到每个输入端。在MF名代表负(ñ
)零(ž
),和正(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,'DELE','trimf',[ - 2 -1 0],'名称','N');FIS1 = addMF(FIS1,'DELE','trimf',[ - 1 0 1],'名称','Z');FIS1 = addMF(FIS1,'DELE','trimf'[0 1 2],'名称','P');
画出输入隶属函数。
图副区(1,2,1)plotmf(FIS1,“输入”,1)标题(“输入1”)副区(1,2,2)plotmf(FIS1,“输入”,2)标题(“输入2”)
输出变量添加到FIS。
FIS1 = addOutput(FIS1,[ - 1 1],'名称','U');
添加均匀分布不变
功能到输出。在MF名代表负大(NB
)负中(NM
)零(ž
)积极的媒介(下午
),和积极的大(PB
)。
FIS1 = addMF(FIS1,'U','不变', 1'名称',“注”);FIS1 = addMF(FIS1,'U','不变', -0.5,'名称','NM');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 ==ž&DELE == Z => U = Z”;...“E == P&DELE == Z => U = PM”;...“E == N'DELE == P => U = Z”;...“E ==ž&DELE == P => U = PM”;...“E == P&DELE == P => U = PB”...]。FIS1 = addRule(FIS1,规则);
绘制控制表面。
图gensurf(FIS1)标题(“类型1 FIS的控制面”)
转换类型1 FIS,FIS1
到类型2 FIS。
FIS2 = convertToType2(FIS1);
类型2关野系统,FIS2
,使用类型2隶属函数的输入变量和类型1隶属函数的输出变量。
用于将输入的MF定义为在[1]中定义的不确定性(FOU)的足迹。要做到这一点,每个MF设置下MF缩放因子。对于这个例子,设定的下MF滞后值0
。
scale = [0.2 0.9 0.2;0.3 0.9 0.3];对于I = 1:长度(fis2.Inputs)对于J = 1:长度(fis2.Inputs(ⅰ).MembershipFunctions)fis2.Inputs(ⅰ).MembershipFunctions(j)的.LowerLag = 0;fis2.Inputs(ⅰ).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 = TF(C,[T 1],'Outputdelay',L);
生成常规PID控制器参数使用pidtune
。
pidController = pidtune (G,“pidf”);
在本例中,引用( 是一个阶跃信号和 ,这导致 如下。
= 1。
Ce = 1;
要配置模拟,使用下面的标称控制器参数。
TAUC = 0.2;CD =分钟(T,L / 2)*铈;C0 = 1 /(C *的Ce *(TAUC + L / 2));C1 = MAX(T,L / 2)* C0;
要模拟控制器,请使用comparepidcontrollers
万博1manbetx仿真软件模型。
模型='comparepidcontrollers';load_system(模型)
模拟在额定工作条件下的模型。
着干活= sim(模型);
积系统的所有三个控制器的阶跃响应。
plotOutput(OUT1,['标称:C ='num2str(C)'L ='num2str(L)'T ='num2str(T)])
获得各控制器的系统阶跃响应特性。
stepResponseTable(着干活)
ans =3×4表上升时间(秒)过冲(%)稳定时间(秒)积分绝对误差_______________ _____________ ___________________ __________________________ PID 0.62412 11.234 4.5564 1.04 1型FLC 1.4267 0 4.1023 1.1522 2型FLC 1.8662 0 5.129 1.282的
对于标称过程:
两个类型1和类型2的模糊逻辑控制器优于常规的PID控制器在过冲的条款。
传统的PID控制器,进行相对于更好到上升时间和积分绝对误差(IAE)的。
在上升时间方面的类型1 FLC进行比类型2 FLC更好,稳定时间,和IAE。
通过比标称工艺提高增益,延时,和时间常数的值修改工厂模型。
C = 0.85;L = 0.6;T = 0.6;G = TF(C,[T 1],'Outputdelay',L);
使用更新设备参数模拟模型。
out2 = sim(模型);
积系统的所有三个控制器的阶跃响应。
plotOutput (out2 ['修改后的1:C ='num2str(C)”,L = 'num2str(L)'T ='num2str(T)])
获得各控制器的系统阶跃响应特性。
stepResponseTable (out2)
ans =3×4表上升时间(秒)过冲(%)稳定时间(秒)积分绝对误差_______________ _____________ ___________________ __________________________ PID 0.38464 80.641 29.452 4.7486 1型FLC 0.47262 24.877 4.6788 1.1137 2型FLC 0.47262 22.787 3.4561 1.076的
对于这个修改过程:
相比于模糊逻辑控制器的常规PID控制器呈现显著过冲,较大的稳定时间,和较高的IAE
对于所有的性能度量,2型FLC与1型FLC产生相同或更好的性能。
总体而言,1型FLC产生用于标称植物相比于常规PID控制器优越的性能。类型2 FLC示出了对于修饰的植物更稳健的性能。
常规PID控制器的鲁棒性可以使用不同的方法,如预测或多个PID控制器配置得到改进。在另一方面,类型2 FLC的性能可通过使用不同的待改进:
规则库
规则数
FOU
例如,可以创建一个类型2 FLC定义FOU同时使用下MF缩放因子并降低MF滞后。
对于FIS2
中,设置下MF规模和滞后值0.7
和0.1
,分别对所有输入隶属函数。
对于I = 1:长度(fis2.Inputs)对于J = 1:长度(fis2.Inputs(ⅰ).MembershipFunctions)fis2.Inputs(ⅰ).MembershipFunctions(j)的.LowerScale = 0.7;fis2.Inputs(ⅰ).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 = TF(C,[T 1],'Outputdelay',L);OUT4 = SIM(模型);close_system(型号1,0)plotOutput(OUT4,['标称:C ='num2str(C)'L ='num2str(L)'T ='num2str(T)])
获得各控制器的系统阶跃响应特性。
stepResponseTable (out4)
ans =3×4表上升时间(秒)过冲(%)稳定时间(秒)积分绝对误差_______________ _____________ ___________________ __________________________ PID 0.62412 11.234 4.5564 1.04 1型FLC 1.4267 0 4.1023 1.1522 2型FLC 1.2179 0 3.8746 1.1087的
在这种情况下,类型2的FLC的更新FOU提高了阶跃响应的上升时间。
然而,下MF滞后值也增加了超调量的修饰的植物的情况下。
C = 0.85;L = 0.6;T = 0.6;G = TF(C,[T 1],'Outputdelay',L);OUT5 = SIM(模型);plotOutput(OUT5,['标称:C ='num2str(C)'L ='num2str(L)'T ='num2str(T)])
stepResponseTable(OUT5)
ans =3×4表上升时间(sec)过度(%)沉淀时间(sec)积分的绝对误差售予_________________ ___________________ __________________________ PID 0.38464 80.641 29.452 4.7486 1型方法0.47262 26.699 4.6812 1.1278 0.47262 24.877 4.6788 1.1137 2型方法
因此,为了获得所需的步骤的响应特性,可以改变所述低MF规模和滞后值以找到合适的组合。
您可以使用Mamdani型FIS进一步改进模糊逻辑控制器输出,因为它还为输出隶属函数提供了更低的MF刻度和滞后参数。然而,由于昂贵的类型缩减过程,Mamdani type-2 FLC引入了额外的计算延迟。
[1]孟德尔,J.M.,不确定基于规则的模糊系统:简介和新方向,第二版,施普林格,2017年,第229-234,600-608。
功能plotOutput(下,plotTitle)图图([0 20],[1 1])保持上情节(out.yout {1} .Values)情节(out.yout {2} .Values)情节(out.yout {3} .Values)保持离网格次要包含(“时间(秒)”)ylabel(“输出”)标题(plotTitle)图例([“参考”,“PID”,“类型1 FLC”,“2型方法”),'位置',“最好”)结束
功能T = stepResponseTable(下)S = stepinfo(out.yout {1} .Values.Data,out.yout {1} .Values.Time);stepResponseInfo(1).RiseTime = s.RiseTime;stepResponseInfo(1).Overshoot = 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(端); 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 FLC”“2型方法”]);t.Properties.VariableNames {1} =上升时间(秒);t.Properties.VariableNames {2} = [t.Properties.VariableNames {2}“(%)”]。t.Properties.VariableNames {3} =“稳定时间(秒)”;t.Properties.VariableNames {4} =“绝对误差积分”;结束