版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、参数编码遗传操作种群1计算适配置满足要求,即达到最大迭代次数解码种群2寻优结束种群1> 种群2复制交叉变异基于遗传算法的PID整定流程图% 基于遗传算法的PID整定% 被控对象为二阶函数: 400% G(s) = -% S2+50S% 采样时间为 1ms,输入信号为阶跃信号% 采用二进制编码方式,种群个体(kp,ki,kd)长度为10close all;clc;clear;global rin yout timef %定义全局变量G=100; %迭代次数Size=30; %种群大小CodeL=10; %种群个体长度(二进制编码)MinX=zeros(1,3); %约束条件,即kp,kd,
2、ki 的取值范围MaxX(1)=20*ones(1); % kp in 0 20MaxX(2)=1.0*ones(1); % kd,ki in 0 1MaxX(3)=1.0*ones(1);E=round(rand(Size,3*CodeL); %初始化种群,编码Bsj=0;for k=1:G %迭代次数 time(k)=k; for s=1:Size m=E(s,:); y1=0;y2=0;y3=0; %输出量初始化(十进制) m1=m(1:CodeL); for i=1:CodeL y1=y1+m1(i)*2(i-1); %计算输出量 end K(s,1)=(MaxX(1)-MinX(1)
3、*y1/1024+MinX(1); %解码,计算Kp的取值 m2=m(CodeL+1:2*CodeL); for i=1:CodeL y2=y2+m2(i)*2(i-1); %计算输出量 end K(s,2)=(MaxX(2)-MinX(2)*y2/1024+MinX(2); %解码,计算Kd的取值 m3=m(2*CodeL+1:3*CodeL); for i=1:CodeL y3=y3+m1(i)*2(i-1); %计算输出量 end K(s,3)=(MaxX(3)-MinX(3)*y1/1024+MinX(3); %解码,计算Ki的取值 % *适应度函数* KK=K(s,:); KK,Bs
4、j=pid_ga(KK,Bsj); % 调用 pid_ga.m Bsji(s)=Bsj; % 最优代价值 end O,D=sort(Bsji); %最优代价值排序 Bestj(k)=O(1) %取最小值 BJ=Bestj(k); Ji=Bsji+1e-10; fi=1./Ji; %适应函数值 O2,D2=sort(fi); %适应函数值排序 Bestfi=O2(Size); %取最大值 Bests=E(D2(Size),:); % * 选择算子 * fi_sum=sum(fi); fi_size=(O2/fi_sum)*Size; fi_s=floor(fi_size); %取较大的适应值,确
5、定其位置 kk=1; for i=1:Size for j=1:fi_s(i) %选择,复制 tempE(kk,:)=E(D2(j),:); kk=kk+1; end end % * 交叉算子 * pc=0.6; %交叉概率 n=30*pc; for i=1:2:(Size-1) temp=rand; if pc>temp %交叉条件 for j=n:-1:1 tempE(i,j)=E(i+1,j); %新、旧种群个体交叉互换 tempE(i+1,j)=E(i,j); end end end tempE(Size,:)=Bests; E=tempE; % * 变异算子 * pm=0.00
6、1-1:1:Size*(0.001)/Size; %变异算子,从大到小 for i=1:Size for j=1:2*CodeL temp=rand; if pm>temp %变异条件 if tempE(i,j)=0 tempE(i,j)=1; else tempE(i,j)=0; end end end end tempE(Size,:)=Bests; E=tempE;endBJ,Bestfi,KKfigure(1),plot(time,Bestj);xlabel('Times');ylabel('Best J');figure(2),plot(time
7、f,rin,'r',timef,yout,'b');xlabel('Times');ylabel('rin,yout');function KK,Bsj=pid_ga(KK,Bsj)global rin yout timef ts=0.001;sys=tf(400,1,50,0); % 被控对象为二阶传递函数dsys=c2d(sys,ts,'z'); %做Z变换num,den=tfdata(dsys,'v');rin=1.0; % 输入信号为阶跃信号 u_1=0.0;u_2=0.0; y_1=0.0
8、;y_2=0.0;x=0 0 0;B=0;err_1=0;tu=1;s=0;P=100;for k=1:P timef(k)=k*ts; r(k)=rin; u(k)=sum(KK.*x); %控制器输出 if u(k)>=10 % 约束条件 u(k)=10; end if u(k)<=-10 u(k)=-10; end %跟踪输入信号 yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; err(k)=r(k)-yout(k); % * 返回 PID 参数* u_2=u_1;u_1=u(k); y_2=y_1;y_1=yout
9、(k); x(1)=err(k); %计算 P x(2)=(err(k)-err_1)/ts; %计算 D x(3)=x(3)+err(k)*ts; %计算 I err(2)=err_1; err_1=err(k); if s=0 if yout(k)>0.95&yout(k)<1.05 tu=timef(k); % tu为上升时间 s=1; % 进入稳态区域 end endendfor i=1:P % 求代价函数值 Ji(i)=0.999*abs(err(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 endend
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年青海省安全员-C证考试(专职安全员)题库及答案
- 2025贵州省安全员-C证考试(专职安全员)题库及答案
- 2025吉林省安全员B证考试题库附答案
- 2025江苏建筑安全员-C证(专职安全员)考试题库
- 2025年湖南省安全员-C证考试题库
- 离心泵知识培训课件
- 普通话口语训练(课件)
- 【物理课件】透镜成像作图法课件
- 材料物理化学课件绪论
- 《BA工法简介》课件
- 公交公司风险分级管控台账
- 食品安全应急管理和突发事故报告制度
- 国际贸易风险防范与应对指南
- 2023年宜宾五粮液股份有限公司社会招聘考试真题
- 2024新教科版一年级科学上册全册教案
- 2024儿童身高现状报告
- 统编版六年级语文上册教学设计教案打印版
- TBJXF 010-2024 集排油烟设施清洗服务规范
- 紫砂壶介绍课件
- 2024年乌鲁木齐市中考英语试卷真题(含答案解析)
- (完整)三年级下册数学竖式计算题500题(可直接打印)
评论
0/150
提交评论