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

📄 fuzzyobj.asv

📁 这是一个遗传算法的优化软件
💻 ASV
字号:
function BsJ=fuzzyobj(Kpidi,BsJ,ts,sys,objdiffer)
global rin yout timef

ts=0.001;
%sys=;  
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');

Rule=[ 7 7 7 7 6 4 4
      7 7 7 7 6 4 4
      6 6 6 5 4 3 3
      6 6 5 4 3 2 2 
      6 6 5 4 3 2 2
      5 5 4 3 2 2 2
      4 4 2 1 1 1 1
      4 4 2 1 1 1 1];
rin=1.0;
u_1=0.0;u_2=0.0;u_3=0.0;
y_1=0.0;y_2=0.0;y_3=0.0;
x=[0,0,0]';
B=0;
e=0;
ce=0;
error_1=0;
tu=1;
s=0;
P=100;
a=Kpidi(1);
b=Kpidi(2);
c=Kpidi(3);
for k=1:1:P
   timef(k)=k*ts;
   r(k)=rin;
x_sum=0;
y_sum=0.001;   
   for j=-3:1:3                               %模糊规则匹配
        c=k;
        ce=k;
        x_sum=x_sum+trig(e,a,b,c)*trig(ce,a,b,c)*Rule(4,j+4);    
        y_sum=y_sum+trig(e,a,b,c)*trig(e,a,b,c);
    end
u(k)=x_sum/y_sum;
   
   if u(k)>=10
      u(k)=10;
   end
   if u(k)<=-10
      u(k)=-10;
   end   
   
   eval(objdiffer);
   %yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
   error(k)=r(k)-yout(k);
%------------ Return of PID parameters -------------
   u_3=u_2;u_2=u_1;u_1=u(k);
   y_3=y_2;y_2=y_1;y_1=yout(k);
   
   e=error(k);                % Calculating P
   ce=(error(k)-error_1)/ts;   % Calculating D
   x(3)=x(3)+error(k)*ts;        
   
   error_2=error_1;
   error_1=error(k);
if s==0
   if yout(k)>0.95&yout(k)<1.05
      tu=timef(k);
      s=1;
   end 
end
end

for i=1:1:P
   Ji(i)=0.999*abs(error(i))+0.01*u(i)^2*0.1;
   B=B+Ji(i);   
  if i>1   
   erry(i)=yout(i)-yout(i-1);
   if erry(i)<0
      B=B+100*abs(erry(i));
   end    
  end
end
BsJ=B+0.2*tu*10;

⌨️ 快捷键说明

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