📄 fruleobj.m
字号:
function tobj=fruleobj(rule,inmf,outmf,park,popsize,differ,gs)
%模糊规则优化适值函数
global yout rin time
G=100;
ts=0.01;
tobj=0;
s=0;
dsys=c2d(gs,ts,'z');
[num,den]=tfdata(dsys,'v');
tu=0;
e=1.0;
ce=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;
r=12.0;
for tt=1:1:G
rin(tt)=12;
time(tt)=tt;
u_2=u_1;
u_3=u_2;
%1
d_e=fa2d(e,park(1),7);
d_ce=fa2d(ce,park(2),7);
%2
f_e=fd2f(d_e,7,inmf,-7,7);
f_ce=fd2f(d_ce,7,inmf,-7,7);
%3
f_u=zeros(1,7);
for i=1:1:7
for j=1:1:7
ind=rule(i,j);
if(ind~=0)
f_u(ind)=f_u(ind)+min(f_e(i),f_ce(j));
end
end
end
%4
f_x=0;
f_y=0;
for i=-7:1:7
f_k=0;
for j=1:1:7
f_k=f_k+min(outmf(i+8,j),f_u(j));
end
f_x=f_x+i*f_k;
f_y=f_y+f_k;
end
if f_y~=0
u_1=park(3)*f_x/f_y;
end
if u_1>=20
u_1=20;
end
if u_1<=-10
u_1=-10;
end
eval(differ);
y_2=y_1;
y_3=y_2;
y_1=yout(tt);
ce=r-yout(tt)-e;
e=r-yout(tt);
tobj=tobj+0.999*abs(e)+0.01*u_1^2*0.1;
if s==0
if yout(tt)>0.95&yout(tt)<1.05
tu=tt;
s=1;
end
end
if tt>1
erry=yout(tt)-yout(tt-1);
if erry<0
tobj=tobj+10*abs(erry);
end
end
end
tobj=tobj+1.0000e-006+2*tu;
tobj=100/tobj;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -