matlab模糊自适应pid控制仿真程序,关于 Matlab模糊自适应PID控制器程序 的问题

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的参数等等

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值