function ovbj=obj(x);
global flc;
global k;
global alpha;
global kp;
global ki;
global kd;
global t;
global y;
global vobj;
alpha=x(1);
ke=x(2);
kec=x(3);
kp=x(4);
ki=x(5);
kd=x(6);
%定义模糊控制器的输入变量、输出变量和隶属度函数
flc=newfis('flc');
flc=addvar(flc,'input','e',[-1 1]);
flc=addmf(flc,'input',1,'NB','trimf',[-1.33,-1,-0.67]);
flc=addmf(flc,'input',1,'NM','trimf',[-1,-0.67,-0.33]);
flc=addmf(flc,'input',1,'NS','trimf',[-0.67,-0.33,0]);
flc=addmf(flc,'input',1,'ZR','trimf',[-0.33,0,0.33]);
flc=addmf(flc,'input',1,'PS','trimf',[0.33,0,0.67]);
flc=addmf(flc,'input',1,'PM','trimf',[0.33,0.67,1]);
flc=addmf(flc,'input',1,'PB','trimf',[0.67,1,1.33]);
flc=addvar(flc,'input','ec',[-1 1]);
flc=addmf(flc,'input',2,'NB','trimf',[-1.33,-1,-0.67]);
flc=addmf(flc,'input',2,'NM','trimf',[-1,-0.67,-0.33]);
flc=addmf(flc,'input',2,'NS','trimf',[-0.67,-0.33,0]);
flc=addmf(flc,'input',2,'ZR','trimf',[-0.33,0,0.33]);
flc=addmf(flc,'input',2,'PS','trimf',[0.33,0,0.67]);
flc=addmf(flc,'input',2,'PM','trimf',[0.33,0.67,1]);
flc=addmf(flc,'input',2,'PB','trimf',[0.67,1,1.33]);
flc=addvar(flc,'output','kp',[-0.3 0.3]);
flc=addmf(flc,'output',1,'NB','trimf',[-0.4,0.3,0.2]);
flc=addmf(flc,'output',1,'NM','trimf',[-0.3,-0.2,-0.1]);
flc=addmf(flc,'output',1,'NS','trimf',[-0.2,-0.1,0]);
flc=addmf(flc,'output',1,'ZR','trimf',[-0.1,0,0.1]);
flc=addmf(flc,'output',1,'PS','trimf',[0,0.1,0.2]);
flc=addmf(flc,'output',1,'PM','trimf',[0.1,0.2,0.3]);
flc=addmf(flc,'output',1,'PB','trimf',[0.2,0.3,0.4]);
flc=addvar(flc,'output','ki',[-0.05 0.05]);
flc=addmf(flc,'output',2,'NB','trimf',[-0.067,-0.05,-0.033]);
flc=addmf(flc,'output',2,'NM','trimf',[-0.05,-0.033,-0.017]);
flc=addmf(flc,'output',2,'NS','trimf',[-0.033,-0.017,0]);
flc=addmf(flc,'output',2,'ZR','trimf',[-0.017,0,0.017]);
flc=addmf(flc,'output',2,'PS','trimf',[0,0.017,0.033]);
flc=addmf(flc,'output',2,'PM','trimf',[0.017,0.033,0.5]);
flc=addmf(flc,'output',2,'PB','trimf',[0.033,0.5,0.067]);
flc=addvar(flc,'output','kd',[-2 2]);
flc=addmf(flc,'output',3,'NB','trimf',[-2.67,-2,-1.33]);
flc=addmf(flc,'output',3,'NM','trimf',[-2,-1.33,-0.67]);
flc=addmf(flc,'output',3,'NS','trimf',[-1.33,-0.67,0]);
flc=addmf(flc,'output',3,'ZR','trimf',[-0.67,0,0.67]);
flc=addmf(flc,'output',3,'PS','trimf',[0,0.67,1.33]);
flc=addmf(flc,'output',3,'PM','trimf',[0.67,1.33,2]);
flc=addmf(flc,'output',3,'PB','trimf',[1.33,2,2.67]);
%生成模糊控制规则
for i=1:7
for j=1:7
rr(i,j)=round(alpha*i+(1-alpha)*j);
end
end
r1=zeros(prod(size(rr)),3);
k1=1;
for i=1:size(rr,1)
for j=1:size(rr,2)
r1(k1,:)=[i,j,rr(i,j)];
k1=k1+1;
end
end
[r,s]=size(r1);
r2=ones(r,2);
rulelist=[r1,r2];
flc=addrule(flc,rulelist);
%模糊控制系统仿真及目标函数值计算
opt1=simset('srcworkspace','current');
[tt,xx,out]=sim('model',[0 80],opt1);
outlong=length(out);
vobj=out(outlong)
程序不完整,不过有流程差不多,有很多需要自己重新编辑,比如rulelist、控制系统的离散传递函数,替换PID的参数等等