模糊控制是一种基于模糊逻辑和隶属度理论的控制方法。它可以很好地描述控制对象的语言变量,如“速度快”、“温度高”等,从而实现了语言控制。
在模糊控制中,隶属度函数(Membership Function)起到将语言量化的重要作用。它使用概念如“高”、“低”来描述系统,更接近人的思考方式。通过调整隶属度函数的参数,如形状、位置等,可以灵活描述输入和输出变化,有利于建立人机智能系统。因此,隶属度函数是模糊控制的核心组成部分之一。它使控制系统能够处理不确定信息,在智能控制中有广泛应用前景。
常用的六种隶属度函数分别对应图中六张图形
如上图,探究六种隶属度函数中各个参数的值的意义。
(1)高斯型隶属度函数:
由于取对应不同c值,图示中两条线呈现不同的结果可知,同样c值时,sigma越大,对应相同x值,隶属度越高;在c值不同时,两条曲线的水平位置发生平移。
(2)广义钟形隶属度函数:
取对应不同的c值,两条曲线发生水平方向上的平移;a和b取值的改变可以改变隶属度函数大于零点五部分的 “水平宽度”。
(3)S型隶属度函数:
a的取值正负决定了隶属度函数的开口方向,而a的绝对值大小决定了隶属度函数的陡峭程度,c决定了隶属度函数在水平方向上的平移初值。
(4)梯形隶属度函数:
a和d确定梯形的左右和x轴相交两点的位置,b和c确定梯形两腰的斜率,通过改变这些参数可以改变梯形隶属度函数的图像。
(5)三角形隶属度函数:
a和c可以确定三角形两边与x轴相交的位置,而参数b可以确定三角形“峰”的水平位置,此时两腰的斜率也会随之改变。
(6)Z形隶属度函数:
A可以确定函数下降的初始点,b可以确定函数交汇到水平线的交汇点。
附录 MATLAB代码
x=-10:0.01:10;
figure;
sigma1=3;sigma2=4;c11=2;c12=1;
y11=gaussmf(x,[sigma1,c11]);
y12=gaussmf(x,[sigma2,c11]);
y13=gaussmf(x,[sigma2,c12]);
subplot(2,3,1);
plot(x,y11,'-',x,y12,'--',x,y13,'--');
grid;
legend('sigma=3,c=2','sigma=4,c=2','sigma=4,c=1');
axis([-10 10 0 1.1]);
a21=5;a22=2;b21=2;b22=4;c21=0;c22=1;
y21=gbellmf(x,[a21,b21,c21]);
y22=gbellmf(x,[a21,b21,c22]);
y23=gbellmf(x,[a22,b21,c22]);
y24=gbellmf(x,[a21,b22,c21]);
subplot(2,3,2);
plot(x,y21,'-',x,y22,'-',x,y23,'-',x,y24,'-');
grid;
legend('a=5,b=2,c=0','a=5,b=2,c=1','a=3,b=2,c=0','a=5,b=4,c=0');
axis([-10 10 0 1.1]);
a31=2;a32=-2;a33=-1;c3=0;
y31=sigmf(x,[a31,c3]);
y32=sigmf(x,[a32,c3]);
y33=sigmf(x,[a33,c3]);
subplot(2,3,3);
plot(x,y31,'-',x,y32,'--',x,y33,'--');
grid;
legend('a1=2','a2=-2','a3=-1');
axis([-10 10 0 1.1]);
a4=-8;a41=-6;b4=-4;b41=-6;c4=4;c41=6;d4=8;d41=6;
y4=trapmf(x,[a4,b4,c4,d4]);
y41=trapmf(x,[a41,b4,c4,d4]);
y42=trapmf(x,[a4,b41,c4,d4]);
y43=trapmf(x,[a4,b4,c41,d4]);
y44=trapmf(x,[a4,b4,c4,d41]);
subplot(2,3,4);
plot(x,y4,'-',x,y41,'-',x,y42,'-',x,y43,'-',x,y44,'-');
grid;
legend('a=-8,b=-4,c=4,d=8','a=-6,b=-4,c=4,d=8','a=-8,b=-6,c=4,d=8','a=-8,b=-4,c=6,d=8','a=-8,b=-4,c=4,d=6');
axis([-10 10 0 1.1]);
a5=-4;a51=-2;b5=2;b51=4;c5=7;c51=5;
y5=trimf(x,[a5,b5,c5]);
y51=trimf(x,[a51,b5,c5]);
y52=trimf(x,[a5,b51,c5]);
y53=trimf(x,[a5,b5,c51]);
subplot(2,3,5);
plot(x,y5,'-',x,y51,'-',x,y52,'-',x,y53,'-');
grid;
legend('a=-4,b=2,c=7','a=-2,b=2,c=7','a=-4,b=4,c=7','a=-4,b=2,c=5');
axis([-10 10 0 1.1]);
a6=-4;a61=-2;b6=7;b61=5;
y6=zmf(x,[a6,b6]);
y61=zmf(x,[a61,b6]);
y62=zmf(x,[a6,b61]);
subplot(2,3,6);
plot(x,y6,'-',x,y61,'-',x,y62,'-');
grid;
legend('a=-4,b=7','a=-2,b=7','a=-4,b=5');
axis([-10 10 0 1.1]);
Reference
[1] Liu, J. K. (2021). Intelligent Control (5th ed.). Beijing: Electronic Industry Press.
[2] Zadeh, L. A. (1965). Fuzzy sets. Information and control, 8(3), 338-353.