re.m

来自「该算法是综合遗传算法和神经网络算法的综合性算法」· M 代码 · 共 108 行

M
108
字号
%塔底PID控制
%function re(Kp,Ti,Kp1,Ti1,T,F,zF,x)
clear;
tic
F=1.1;
zF=0.6;
Kp=2;
Ti=15;
Kp1=4;
Ti1=15;
x=[0.0100 0.0143 0.0198 0.0268 0.0357 0.0468 0.0607 0.0778 0.0985 0.1232 0.1519 0.1846 0.2206 0.2591 0.2990 0.3389 0.3774 0.4133 0.4458 0.4743 0.4988 0.5266 0.5578 0.5921 0.6290 0.6674 0.7064 0.7447 0.7814 0.8156 0.8467 0.8742 0.8981 0.9186 0.9357 0.9500 0.9617 0.9712 0.9789 0.9850 0.9900];
T=300;

r=0.01;
Td=0;
h=0.05;Ts=0.05; 
n=round(Ts/h);
r1=0.99;
Td1=0;
h1=0.05;Ts1=0.05;
n1=round(Ts1/h1);

t(1)=0;t1(1)=0;t11(1)=0;yn=0.01;en=0;en_1=0;en_2=0;un_1=0;u(1)=0;y(1)=0.01;e(1)=r-yn;
yn1=0.99;en1=0;en1_1=0;en1_2=0;un1_1=0;u1(1)=0;y1(1)=0.99;e1(1)=r1-yn1;sumuf=0;sumen=0;
for jn=1:round(T/Ts)
       
    un=un_1+Kp*((1+Ts/Ti+Td/Ts)*en-(1+2*Td/Ts)*en_1+Td/Ts*en_2);
    u(jn+1)=un;
    uf=un;
    sumuf=sumuf+uf;
    save training_data1;
    GA_function(uf,sumuf);
    
    load data1;

%     %经过GA-NN    
%     options=gaoptimset; 
%     options.PopInitRange=[-0.5 -0.5 -0.5 0
%                            0.5 0.5 0.5 4];
%     options.PopulationSize=16; 
%     options.Generations=1; 
%     options.StallGenLimit=Inf; 
%     options.StallTimeLimit=Inf; 
%     options = gaoptimset(options);
%     [par,fval] = ga(@fitness_function,4,options);
%     un=fval;
%     for n=1:n
%         m=(jn-1)*n+i+1;
%         k1=fun5(x,F,zF)+un;
%         k2=fun5(x+h*k1/2,F,zF)+un;
%         k3=fun5(x+h*k2/2,F,zF)+un;
%         k4=fun5(x+h*k3,F,zF)+un;
%         x=x+h/6*(k1+2*k2+2*k3+k4); 
%         yn=x(:,1);
%         if yn<0
%             error('yn<0,请重新设置控制参数')
%         end
%         y(m)=yn;
%         t1(m)=(m-1)*h;
%     end    
%     
%     en1=r1-yn1;    
%     un1=un1_1+Kp1*((1+Ts1/Ti1+Td1/Ts1)*en1-(1+2*Td1/Ts1)*en1_1+Td1/Ts1*en1_2);
%     u1(jn+1)=un1;
%     for i=1:n
%         m1=(jn-1)*n1+i+1;
%         k1=fun5(x,F,zF)+un1;
%         k2=fun5(x+h*k1/2,F,zF)+un1;
%         k3=fun5(x+h*k2/2,F,zF)+un1;
%         k4=fun5(x+h*k3,F,zF)+un1;
%         x=x+h/6*(k1+2*k2+2*k3+k4); 
%         yn1=x(:,41);
%         if yn1>1
%             error('yn>1,请重新设置控制参数')
%         end
%         y1(m1)=yn1;
%         t11(m1)=(m1-1)*h1;
%     end
%     e1(jn+1)=en1;
%     un1_1=un1;
%     en1_2=en1_1;
%     en1_1=en1;
%     e(jn+1)=en;
    un_1=un;
    en_2=en_1;
    en_1=en;
    t(jn+1)=jn*Ts;
end
toc
save('convar','u','u1');
figure(1)
load GA_data meansquare
plot(i,meansquare(1,:),'r:');
title('sum root mean square error');
figure(2)
subplot(2,1,1)
plot(t1,y,'r')
legend('系统输出(塔底轻组分)')
subplot(2,1,2)
plot(t1,y1,'b')
legend('系统输出(塔顶轻组分)')






⌨️ 快捷键说明

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