遗传算法pid matlab程序解释,关于遗传算法的pid整定问题
我用了刘金琨《先进PID》控制中基于实数编码PID整定的例子改了传递函数参数后(sys=tf(400,[1,50,0]);变为sys=tf(12.5,[1,2.58,12.5]); )整定后的阶跃响应图形变为
[img]file:///C:\Users\leglas\AppData\Roaming\Tencent\Users\76744502\QQ\WinTemp\RichOle\R`G_U{1O[H{`DCQT}Y)O%BA.jpg[/img]
想请教下大家是怎么回事呢?
谢咯!
附程序
%GA(Generic Algorithm) Program to optimize PID Parameters
clear all;
close all;
global rin yout timef
Size=30;
CodeL=3;
MinX(1)=zeros(1);
MaxX(1)=20*ones(1);
MinX(2)=zeros(1);
MaxX(2)=1.0*ones(1);
MinX(3)=zeros(1);
MaxX(3)=1.0*ones(1);
Kpid(:,1)=MinX(1)+(MaxX(1)-MinX(1))*rand(Size,1);
Kpid(:,2)=MinX(2)+(MaxX(2)-MinX(2))*rand(Size,1);
Kpid(:,3)=MinX(3)+(MaxX(3)-MinX(3))*rand(Size,1);
G=100;
BsJ=0;
%*************** Start Running ***************
for kg=1:1:G
time(kg)=kg;
%****** Step 1 : Evaluate BestJ ******
for i=1:1:Size
Kpidi=Kpid(i,:);
[Kpidi,BsJ]=chap5_3f(Kpidi,BsJ);
BsJi(i)=BsJ;
end
[OderJi,IndexJi]=sort(BsJi);
BestJ(kg)=OderJi(1);
BJ=BestJ(kg);
Ji=BsJi+1e-10; %Avoiding deviding zero
fi=1./Ji;
% Cm=max(Ji);
% fi=Cm-Ji;
[Oderfi,Indexfi]=sort(fi); %Arranging fi small to bigger
Bestfi=Oderfi(Size); %Let Bestfi=max(fi)
BestS=Kpid(Indexfi(Size),:); %Let BestS=E(m), m is the Indexfi belong to max(fi)
kg
BJ
BestS
%****** Step 2 : Select and Reproduct Operation******
fi_sum=sum(fi);
fi_Size=(Oderfi/fi_sum)*Size;
fi_S=floor(fi_Size); % Selecting Bigger fi value
r=Size-sum(fi_S);
Rest=fi_Size-fi_S;
[RestValue,Index]=sort(Rest);
for i=Size:-1:Size-r+1
fi_S(Index(i))=fi_S(Index(i))+1; % Adding rest to equal Size
end
k=1;
for i=Size:-1:1 % Select the Sizeth and Reproduce firstly
for j=1:1:fi_S(i)
TempE(k,:)=Kpid(Indexfi(i),:); % Select and Reproduce
k=k+1; % k is used to reproduce
end
end
%************ Step 3 : Crossover Operation ************
Pc=0.90;
for i=1:2:(Size-1)
temp=rand;
if Pc>temp %Crossover Condition
alfa=rand;
TempE(i,:)=alfa*Kpid(i+1,:)+(1-alfa)*Kpid(i,:);
TempE(i+1,:)=alfa*Kpid(i,:)+(1-alfa)*Kpid(i+1,:);
end
end
TempE(Size,:)=BestS;
Kpid=TempE;
%************ Step 4: Mutation Operation **************
Pm=0.10-[1:1:Size]*(0.01)/Size; %Bigger fi,smaller Pm
Pm_rand=rand(Size,CodeL);
Mean=(MaxX + MinX)/2;
Dif=(MaxX-MinX);
for i=1:1:Size
for j=1:1:CodeL
if Pm(i)>Pm_rand(i,j) %Mutation Condition
TempE(i,j)=Mean(j)+Dif(j)*(rand-0.5);
end
end
end
%Guarantee TempE(Size,:) belong to the best individual
TempE(Size,:)=BestS;
Kpid=TempE;
end
Bestfi
BestS
Best_J=BestJ(G)
figure(1);
plot(time,BestJ);
xlabel('Times');ylabel('Best J');
figure(2);
plot(timef,rin,'r',timef,yout,'b');
xlabel('Time(s)');ylabel('rin,yout');
function [Kpidi,BsJ]=pid_gaf(Kpidi,BsJ)
global rin yout timef
ts=0.001;
sys=tf(12.5,[1,2.58,12.5]);
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');
rin=1.0;
u_1=0.0;u_2=0.0;
y_1=0.0;y_2=0.0;
x=[0,0,0]';
B=0;
error_1=0;
tu=1;
s=0;
P=100;
for k=1:1:P
timef(k)=k*ts;
r(k)=rin;
u(k)=Kpidi(1)*x(1)+Kpidi(2)*x(2)+Kpidi(3)*x(3);
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;
error(k)=r(k)-yout(k);
%------------ Return of PID parameters -------------
u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);
x(1)=error(k); % Calculating P
x(2)=(error(k)-error_1)/ts; % Calculating D
x(3)=x(3)+error(k)*ts; % Calculating I
error_2=error_1;
error_1=error(k);
if s==0
if yout(k)>0.95&yout(k)<1.05
tu=timef(k);
s=1;
end
end
end
for i=1:1:P
Ji(i)=0.999*abs(error(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
end
end
BsJ=B+0.2*tu*10;[img]file:///C:\Users\leglas\AppData\Roaming\Tencent\Users\76744502\QQ\WinTemp\RichOle\R`G_U{1O[H{`DCQT}Y)O%BA.jpg[/img]
20130722100031.jpg
(20.99 KB, 下载次数: 34)
2013-7-22 10:00 上传
遗传算法pid matlab程序解释,关于遗传算法的pid整定问题相关推荐
- TSP问题遗传算法通用Matlab程序
程序一:主程序 %TSP问题(又名:旅行商问题,货郎担问题)遗传算法通用matlab程序 %D是距离矩阵,n为种群个数 %参数a是中国31个城市的坐标 %C为停止代数,遗传到第 C代时程序停止,C的具 ...
- 遗传算法以及matlab程序实现
遗传算法以及matlab程序实现 话不多说,直接上程序,该程序为寻找目标函数的最大值,代码中所用到的matlab函数大多是基于谢菲尔德大学的遗传算法工具箱实现的,所以有小伙伴运行时出现函数问题,那就应 ...
- 【老生谈算法】标准遗传算法的MATLAB实现源码——遗传算法
标准遗传算法的MATLAB实现 1.原文下载: 本算法原文如下,有需要的朋友可以点击进行下载 序号 原文(点击下载) 本项目原文 [老生谈算法]标准遗传算法的MATLAB实现.doc 2.算法详解: ...
- 临界比例度法 matlab程序,扩充临界比例度法整定参数及PID控制.doc
扩充临界比例度法整定参数及PID控制 仲恺农业工程学院课程设计报告书 院 系:学院所 选 题 目: 专 业 班 别:姓 名:学 号:提 交 日 期:年 月日 0 引言3 1 设计任务3 1.1设计目的 ...
- MATLAB程序详细解析,遗传算法——matlab代码解析
遗传算法--matlab代码解析 本文为学习B站老哥数学建模课程之后的一点笔记,图片源自web,代码源自老哥程序包,侵权删. 详细的遗传算法原理不再赘述,百度即可找到. 算法定义 遗传算法(GA)是模 ...
- 遗传算法系统辨识matlab程序,8.8 基于遗传算法的机械手参数辨识 系统辨识理论及Matlab仿真课件.ppt...
8.8 基于遗传算法的机械手参数辨识 (1) 8.8.1 系统描述 双关节机械臂动力学方程可写为: 其中 为重力加速度. 参数 分别是机械力臂方程中未知物理参数 的函数,表达如下: 由 的定义,可知: ...
- 货物配送问题的matlab,遗传算法matlab程序【基于遗传算法的无时限多配送中心车辆调度问题研究】...
[摘 要] 针对多配送中心车辆调度问题的复杂性特点,提出用最近距离分配法和遗传算法分两步求解多配送中心车辆调度问题,并进行了试验计算. [关键词] 多配送中心 车辆调度 最近距离分配法 遗传算法 一. ...
- 用matlab程序表示三角形序列,MATLAB程序举例带注释
1.绘制云图 Ex=18 En=2 He=0.2 hold on for i=1:1000 Enn=randn(1)*He+En; x(i)=randn(1)*Enn+Ex; y(i)=exp(-(x ...
- 神经网络和pid有什么区别,基于神经网络的pid控制
PID控制的原理是什么? . PID回路是要自动实现一个操作人员用量具和控制旋钮进行的工作,这个操作人员会用量具测系统输出的结果,然后用控制旋钮来调整这个系统的输入:直到系统的输出在量具上显示稳定的需 ...
- 双隐藏层BP网络的matlab仿真,求遗传算法优化含有两个隐含层的BP神经网络的matlab程序...
怎样用遗传算法优化含有两个隐含层的BP神经网络的matlab程序啊,这个代码是错的,可不知道错在哪,求高手帮忙解答,非常感谢! FieldD=[repmat(PRECI,1,N);repmat([-0 ...
最新文章
- 瞎聊Spring Cloud
- SVN终端演练(个人开发\多人开发)
- 115个Java面试题和答案——终极列表(上)
- python语言训练教程_PYTHON零基础快乐学习之旅(K12实战训练)
- maven项目打包时生成dependency-reduced-pom.xml
- c语言学习的计划,c语言重新学习计划(转帖)
- FPGA————构建3*3矩阵实现每一列求和
- Python学习笔记: 闭包
- 博客开园了~~~~~~
- PHP读dwg,dwg文件阅读器
- 深入探究:TIFF格式的影像如何转jpg (保持色彩不变)
- 同时虚拟多个3D桌面
- 笔记本锁定计算机怎么解锁,笔记本键盘被锁定了怎么办 笔记本解锁键盘的方法...
- 五寸照片尺寸像素 5寸的照片是几比几的
- vba学习系列(2)--以文本存储的数字转为数字格式
- 手机端上传图片出现“没有应用可执行操作”
- [anjularjs] ui-router嵌套ui-view不刷新问题
- python协同过滤电影推荐_推荐系统:基于用户和模型的协同过滤电影推荐
- VMware 中CentOS 8设置固定IP同时连接内外网
- 统计学,机器学习,数据挖掘,深度学习