西安理工大学
研究生课程论文/研究报告
课程名称: 智能控制 任课教师:
论文/研究报告题目: 基于遗传算法的模糊控制器最优设计 完成日期: 2016 年 8 月 27 日 学 科: 电力电子与电力传动 学 号: 姓 名:
1. 基于遗传算法的模糊控制MATLAB程序:
clear all close all clc
T=0.1; %控制系统采样时间 TM=200; %控制系统运行次数 time=zeros(1,TM); kp=0.2;ki=0.002;kd=20; tr=0;
%定义初始种群参数
N=10; %初始种群数目 M=3; %遗传代数 varb=3; %语言值个数 yout1=zeros(N,TM); yout=zeros(M,TM); fitness=zeros(1,N);
%产生初始种群 n=varb^2;
n1=varb^2+varb*2; %每条染色体的长度 mfpara1=randint(N,n,[1,varb]); %控制规则表
mfpara2=-1*rand(N,varb); %mfpara2(1),mfpara2(2),mfpara2(3)分别为an,bn,cn
mfpara3=rand(N,varb); %mfpara3(1),mfpara3(2),mfpara3(3)分别为ap,bp,cp
init=[mfpara1,mfpara2,mfpara3];
%离散化被控对象 num=[1];
den=conv(conv([1,0.1],[1,0.2]),[1,0.7]); g=tf(num,den); yn=c2d(g,T,'zoh'); [tt,ff]=tfdata(yn,'v');
%开始循环 p=1
while p<=M %循环代数从1到3 q=1
while q<=N %染色体数从1到10 y=zeros(1,TM); u=zeros(1,TM); er=zeros(1,TM);
1
yr=zeros(1,TM); e1=0;e2=0;E1=0; y1=0;y2=0;y3=0; u1=0;u2=0;u3=0; e=zeros(1,TM); E=zeros(1,TM);
for k=1:TM %运行系统 yr(k)=1;
y(k)=-ff(2)*y1-ff(3)*y2-ff(4)*y3+tt(2)*u1+tt(3)*u2+tt(4)*u3; y3=y2;y2=y1;y1=y(k); u3=u2;u2=u1; e(k)=yr(k)-y(k); er(k)=(e(k)-e1)/T;
detae=fu_zzy(init(q,:),e(k),er(k),varb); %调用模糊控制规则程序
E(k)=e(k)+detae;
u(k)=kp*E(k)+ki*sum(E)+kd*(E(k)-E1); E1=E(k); u1=u(k); e2=e1;e1=e(k); end for k=1:TM
if abs(y(k)-1)<=0.1
tr=k*T; %上升时间tr break end end ymax=0; for k=1:TM if ymax ymax=y(k); %最大输出ymax end end for k=1:TM era(k)=abs(e(k)); %计算误差绝对值era end accer=sum(era); %累积误差accer overshoot=(ymax-1)/1; %超调量overshoot tr overshoot accer %计算适配值,归一化0—100 if (tr>2)|(overshoot>1)|(accer>50) 2