⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linectrlok5512iinv.m

📁 一个非线性制实例,采用ANN-PID实现一非线性系统控制
💻 M
字号:

%单变量非线性动态系统控制器
clear;
m=2;
n=200;
k=n;
 for i=1:100;
xi(i,1)=1;
end
for i=101:200;
xi(i,1)=0.3;
end
v=zeros(k,1);

w11=rand(1,n);
ww11=zeros(1,n);
w13=rand(1,n);
ww13=zeros(1,n);
w12=rand(1,n);
ww12=zeros(1,n);
w21=rand(1,n);
ww21=zeros(1,n);
w23=rand(1,n);
ww23=zeros(1,n);
w22=rand(1,n);
ww22=zeros(1,n);
wjh1=ones(1,n);
wwjh1=zeros(1,n);
wjh2=ones(1,n);
wwjh2=zeros(1,n);
wjh3=ones(1,n);
wwjh3=zeros(1,n);
w11(1,1)=1;
w13(1,1)=-1;
w12(1,1)=1;
w21(1,1)=0.1;
w23(1,1)=-1;
w22(1,1)=-0.1;
h=1;
wjh1(1,1)=0.1;
wjh2(1,1)=0.1;
wjh3(1,1)=0.1;
j=zeros(1,n);

eta=.0025;
eeta=.0025;
net=ones(3,n);
net(1,1)=w11(1,1)*xi(1,1)+w21(1,1)*v(1,1);
net(2,1)=w12(1,1)*xi(1,1)+w22(1,1)*v(1,1);
net(2,2)=w12(1,1)*xi(2,1)+w22(1,1)*v(2,1);
net(3,1)=w13(1,1)*xi(1,1)+w23(1,1)*v(1,1);

upie(1,1)=net(1,1);
upie(2,1)=net(2,1);
upie(2,2)=upie(2,1)+net(2,2);
upie(3,1)=net(3,1);
upie(3,2)=net(3,2)-net(3,1);
uliangpie=zeros(1,n);
uliangpie(1,1)=wjh1(1,1)*upie(1,1)+wjh2(1,2)*upie(2,1)+wjh3(1,3)*upie(3,1);

i=1;
mmax=10;
mmax=ones(200,2);

for r=1:150
    
for k=2:n
   
    for j=1:3
                   if j==1
                   
                    net(j,k)=w11(1,k)*xi(k,1)+w21(1,k)*v(k,1);  
                    upie(j,k)=w11(1,k)*xi(k,i)+w21(1,k)*v(k,i); 
                     
                     if upie(j,k)>1
                         upie(j,k)=1;
                     elseif upie(j,k)<-1
                         upie(j,k)=-1;
                     end
                 elseif j==2
                     net(j,k)=w12(1,k)*xi(k,1)+w22(1,k)*v(k,1);  
                     upie(j,k)=sum(net(j,k-1));
                       if upie(j,k)>1
                         upie(j,k)=1;
                     elseif upie(j,k)<-1
                         upie(j,k)=-1;
                     end
                     
                 else
                     upie(j,k)=w13(1,k)*xi(k,i)+w23(1,k)*v(k,i)-w13(1,k-1)*xi(k-1,i)-w23(1,k-1)*v(k-1,i);
                    net(j,k)=w13(1,k)*xi(k,1)+w23(1,k)*v(k,1);  

                     if upie(j,k)>1
                         upie(j,k)=1;
                     elseif upie(j,k)<-1
                         upie(j,k)=-1;
                     end
                     
                      
                 end
       end
end
 for k=3:n 
 uliangpie(1,k)=wjh1(1,k)*upie(1,k)+wjh2(1,k)*upie(2,k)+wjh3(1,k)*upie(3,k);
 v(k,1)=1.0212*v(k,1)-3.0486*v(k-1,1)-0.1423*uliangpie(1,k)+0.4404*uliangpie(1,k-1);

  end
 
             for j=1:3
                if j==1   
                    for k=2:n
                wwjh1(1,k)=wjh1(1,k)+eeta*(2/n*(xi(k,i)-v(k,1)))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*upie(j,k);
                wjh1(1,k)=wwjh1(1,k);
                    end
                elseif j==2
                    for k=2:n
                wwjh2(1,k)=wjh2(1,k)+eeta*(2/n*(xi(k,i)-v(k,1)))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*upie(j,k);
                wjh2(1,k)=wwjh2(1,k);
                    end
                elseif j==3
                    for k=2:n
                wwjh3(1,k)=wjh3(1,k)+eeta*(2/n*(xi(k,i)-v(k,1)))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*upie(j,k);
                wjh3(1,k)=wwjh3(1,k);
                    end
                end
             end
                  for k=2:n
                    ww11(1,k)=w11(1,k)+eta*(2/n*(xi(k,i)-v(k,1))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*wjh1(1,k)*sign((upie(1,k)-upie(1,k-1)))*sign((net(1,k)-net(1,k-1)))*xi(k,i));
                    w11(1,k)=ww11(1,k);
                    ww12(1,k)=w12(1,k)+eta*(2/n*(xi(k,i)-v(k,1))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*wjh2(1,k)*sign((upie(2,k)-upie(2,k-1)))*sign((net(2,k)-net(2,k-1)))*xi(k,i));
                    w12(1,k)=ww12(1,k);
                    ww13(1,k)=w13(1,k)+eta*(2/n*(xi(k,i)-v(k,1))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*wjh3(1,k)*sign((upie(3,k)-upie(3,k-1)))*sign((net(3,k)-net(3,k-1)))*xi(k,i));
                    w13(1,k)=ww13(1,k);
                    ww21(1,k)=w21(1,k)+eta*(2/n*(xi(k,i)-v(k,1))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*wjh1(1,k)*sign((upie(1,k)-upie(1,k-1)))*sign((net(1,k)-net(1,k-1)))*v(k,i));
                    w21(1,k)=ww21(1,k);
                    ww22(1,k)=w22(1,k)+eta*(2/n*(xi(k,i)-v(k,1))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*wjh2(1,k)*sign((upie(2,k)-upie(2,k-1)))*sign((net(2,k)-net(2,k-1)))*v(k,i));
                    w22(1,k)=ww22(1,k);
                    ww23(1,k)=w23(1,k)+eta*(2/n*(xi(k,i)-v(k,1))*sign(v(k,1)-v(k-1,1))*sign(uliangpie(1,k)-uliangpie(1,k-1))*wjh3(1,k)*sign((upie(3,k)-upie(3,k-1)))*sign((net(3,k)-net(3,k-1)))*v(k,i));
                    w23(1,k)=ww23(1,k);
                   end
 
 
  
  for k=3:n       
   uliangpie(1,k)=wjh1(1,k)*upie(1,k)+wjh2(1,k)*upie(2,k)+wjh3(1,k)*upie(3,k);
   v(k,1)=1.0212*v(k,1)-3.0486*v(k-1,1)-0.1423*uliangpie(1,k)+0.4404*uliangpie(1,k-1);
   j(1,k)=(xi(k,i)-v(k,1))^2;

end
j(1,1)=0.3;
j(1,200)=0;
dj=max(abs(j));
mmax=max(dj');
o(1,r)=sum(j)/200;
r
end


i=1:1:n-1;
plot(i,xi(i,1),'r',i,v(i,1),'black');
ylabel('red is refrence,black is output');
xlabel('time');
title('With The ANN-PID Control system of SISO ');
figure(2)
i=1:r;
plot(i,o(1,i));
ylabel('Eeror');
xlabel('Step');
title('With The ANN-PID Control system of SISO ');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -