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

📄 mohupidobj.asv

📁 氧乐果控制过程
💻 ASV
字号:
function obj=mohupidobj(chrom)
global rin yout timef ntt mtt nmtol kk ts u P a b et Tdelay xe xec;

[n1,n2]=size(chrom);
n=0;
a1=0;
while (n<n1)
n=n+1;
B=0;
error_1=0;
error_2=0;
rin=1.0;
u=zeros(1,P);
x=[0,0,0];
u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
%------------ Return of PID parameters -------------
for k=1:1:P
r(k)=rin;
a(k)=1.2*(1-0.8*exp(-0.1*k));
timef(k)=k*ts;
yout(k)=a(k)*y_1/(1+y_1^2)+u_1;
error(k)=r(k)-yout(k);
x(1)=error(k)/abs(rin);              %compute e
x(2)=(error(k)-error_1)/abs(ts*rin); %compute ec
ecerror(k)=error(k)-error_1;
error_2=error_1;
error_1=error(k);

ee(1)=exp(-(x-
%对e,ec进行量化
%  if x(1)>=chrom(n,14) 
% e=3*sign(error(k));
% elseif x(1)>=chrom(n,15)
% e=2*sign(error(k));
% elseif x(1)>=chrom(n,16)
% e=1*sign(error(k));
% else
% e=0;
%  end
% i=e+4;
% 
%  if x(2)>=chrom(n,17)
% ec=2*sign(error(k));
% elseif x(2)>=chrom(n,18)
% ec=1*sign(error(k));
% else
%  ec=0;
%  end
%  j=ec+3+7;

%对e,ec进行量化
 if abs(x(1))>=0.5
e=3*sign(error(k));
elseif abs(x(1))>=0.15
e=2*sign(error(k));
elseif abs(x(1))>=0.001
e=1*sign(error(k));
else
e=0;
 end
i=e+4;

 if abs(x(2))>=0.3
ec=2*sign(error(k)-error_1);
elseif abs(x(2))>=0.01
ec=1*sign(error(k)-error_1);
else
 ec=0;
 end
 j=ec+3;

%  for se=1:7
%       for sec=1:5
%         ch(5*(se-1)+sec)= chrom(n,5*(se-1)+sec);
%       end
%   end
  
kk=5*(i-1)+j;
% du=chrom(n,13)*(chrom(n,i)*e+chrom(n,j)*ec); 
% du=(ch(kk)*e+(1-ch(kk))*ec); 
du=chrom(n,kk)*(chrom(n,36)*e+chrom(n,37)*ec); 
if k>=2
u(k)=u(k-1)+du;
else
 u(k)=du;
end
u_1=u(k);
y_1=yout(k);
end

s=0;
for i=1:1:P
% Ji(i)=0.999*abs(error(i))+0.05*u(i)^2;
% Ji(i)=abs(error(i));
%  Ji(i)=s+ts*i*(abs(error(i)))^2*ts;%(ITAE)
%     s=Ji(i);
% Ji(i)=(abs(error(i))^2*ts);
Ji(i)=(abs(error(i))*ts);
% Ji(i)=(abs(error(i))+abs(ecerror(i)));% 
   B=B+Ji(i);   

end
% obj(n)=B+0.2*tu*10;
 obj(n)=B;
end
 obj=obj';
 


%    if u(k)>=10
%       u(k)=10;
%    end
%    if u(k)<=-10
%       u(k)=-10;
%    end   
%    

%    if yout(k)>0.95&yout(k)<1.05
%       tu=timef(k);
%        s=1;
%    end 
   
%   if yout(k)>0.95 & yout(k)<1.05
%       ss=k-sk;
%       sk=k;
%     if ss==1
%          nn=nn+1;
%     else
%          nn=1;
%     end
%     if nn==5
%         t=k-5;
%     end
%   end 
%   
%    if s==0
%      if yout(k)>0.99
%        tu=timef(k);
%        s=1;
%      end
%    end
   
% u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);   
% y_3=y_2;y_2=y_1;y_1=yout(k);
% 
% end

% ess=(yout(100)+yout(99)+yout(98)+yout(97)+yout(96))/5-1

%计算超调,稳态误差,调节时间
% am1=((max-1)-am)/am;
% ts0=(t*ts-ts1)/ts1;
% em1=(abs(ess)-em)/em;
% 
% if am1<0 
%     am1=0;
% end
% 
% if ts0<0
%     ts0=0;
% end
% 
% if em1<0
%     em1=0;
% end
% 
% obj(n)=am1+ts0+em1+0.0001;
% end
%  obj=obj';
%

⌨️ 快捷键说明

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