一、逼近器的种类及由来
1. 常用逼近器
(1)多项式逼近器;
(2)神经网络逼近器;
(3)模糊逼近器。
2. 研究意义
对于参数不确定系统,可以利用自适应控制或者鲁棒控制解决,通过李亚普洛夫法构造自适应率,或者参数变化范围有界时,可以利用鲁棒控制的思维使得系统对于该参数不敏感;而对于模型不确定(难以确定模型或者其部分准确表达式),模糊逼近(万能逼近)或者神经网络逼近则可解决这类问题。对于模型不确定,实际应用中比较普遍,实用性大。与输出调节或则自适应控制都可以结合起来,解决含有模型未知的输出调节控制或者自适应控制。
3. 模糊逼近优势
模糊逼近能够充分利用语言的信息能力,构造较为容易,但其缺陷在于模糊规则制定需要丰富经验,而且模糊规则作为逼近的核心因素之一,模糊规则的优劣也直接影响着模糊逼近误差。
神经网络逼近器或者更为先进的机器学习算法逼近较模糊逼近精度可能更好,但在拟合非线性函数时,需要依赖庞大的数据集(集合越丰富,拟合程度越高),而且其构造较为复杂,实际应用难度也较大。
二、模糊逼近器设计步骤
步骤1:设二维模糊系统为集合
上的一个函数,其解析式形式未知。
三、实例仿真与分析
%%————————————————————————————————————%%
%功能:模糊逼近
%时间:2020年5月16日
%作者:Peng Jin
%版本:V1.0
%————————————————————————————---———————%%
%% Fuzzy approaching
clear all;
close all;
clc
T=0.1;
x1=-1:T:1;
x2=-1:T:1;
L=2;
h=0.05;
N=L/h+1;
for i=1:1:N %N MF
for j=1:1:N
e1(i)=-1+L/(N-1)*(i-1);
e2(j)=-1+L/(N-1)*(j-1);
gx(i,j)=sin((e1(i))*pi)+cos((e2(j))*pi)+sin(e1(i)*pi)*cos(e2(j)*pi)
end
end
df=zeros(L/T+1,L/T+1);
cf=zeros(L/T+1,L/T+1);
for m=1:1:N %u1 change from 1 to N
if m==1
u1=trimf(x1,[-1,-1,-1+L/(N-1)]); %First u1
elseif m==N
u1=trimf(x1,[1-L/(N-1),1,1]); %Last u1
else
u1=trimf(x1,[e1(m-1),e1(m),e1(m+1)]);
end
figure(1);
hold on;
plot(x1,u1);
xlabel('x1');ylabel('Membership function');
for n=1:1:N %u2 change from 1 to N
if n==1
u2=trimf(x2,[-1,-1,-1+L/(N-1)]); %First u2
elseif n==N
u2=trimf(x2,[1-L/(N-1),1,1]); %Last u2
else
u2=trimf(x2,[e2(n-1),e2(n),e2(n+1)]);
end
figure(2);
hold on;
plot(x2,u2);
xlabel('x2');
ylabel('Membership function');
for i=1:1:L/T+1
for j=1:1:L/T+1
d=df(i,j)+u1(i)*u2(j);
df(i,j)=d;
c=cf(i,j)+gx(m,n)*u1(i)*u2(j);
cf(i,j)=c;
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for i=1:1:L/T+1
for j=1:1:L/T+1
f(i,j)=cf(i,j)/df(i,j);
y(i,j)=sin((x1(i))*pi)+cos((x2(j))*pi)+sin(x1(i)*pi)*cos(x2(j)*pi)
end
end
figure(3);
subplot(211);
surf(x1,x2,f);
title('f(x)');
subplot(212);
surf(x1,x2,y);
title('g(x)');
figure(4);
surf(x1,x2,f-y);
title('Approaching error')