資源簡介
用粒子群pso算法優化pid控制的參數,matlab源代碼,非常實用!
代碼片段和文件信息
%%?清空環境
clear
clc
%%?參數設置
w?=?0.6;??????%?慣性因子?
c1?=?2;???????%?加速常數
c2?=?2;???????%?加速常數
Dim?=?3;????????????%?維數
SwarmSize?=?100;????%?粒子群規模
ObjFun?=?@PSO_PID;??%?待優化函數句柄
MaxIter?=?100;??????%?最大迭代次數??
MinFit?=?0.1;???????%?最小適應值?
Vmax?=?1;
Vmin?=?-1;
Ub?=?[300?300?300];
Lb?=?[0?0?0];
%%?粒子群初始化
????Range?=?ones(SwarmSize1)*(Ub-Lb);
????Swarm?=?rand(SwarmSizeDim).*Range?+?ones(SwarmSize1)*Lb??????%?初始化粒子群
????VStep?=?rand(SwarmSizeDim)*(Vmax-Vmin)?+?Vmin?????????????????%?初始化速度
????fSwarm?=?zeros(SwarmSize1);
for?i=1:SwarmSize
????fSwarm(i:)?=?feval(ObjFunSwarm(i:));?????????????????????????%?粒子群的適應值
end
%%?個體極值和群體極值
[bestf?bestindex]=min(fSwarm);
zbest=Swarm(bestindex:);???%?全局最佳
gbest=Swarm;????????????????%?個體最佳
fgbest=fSwarm;??????????????%?個體最佳適應值
fzbest=bestf;???????????????%?全局最佳適應值
%%?迭代尋優
iter?=?0;
y_fitness?=?zeros(1MaxIter);???%?預先產生4個空矩陣
K_p?=?zeros(1MaxIter);?????????
K_i?=?zeros(1MaxIter);
K_d?=?zeros(1MaxIter);
while(?(iter??Mi
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????29558??2010-08-22?18:38??pso優化\PID_Model.mdl
?????文件???????2589??2010-08-23?13:03??pso優化\PSO.m
?????文件????????174??2010-08-22?18:38??pso優化\PSO_PID.m
?????目錄??????????0??2016-05-05?10:18??pso優化
-----------?---------??----------?-----??----
????????????????32321????????????????????4
- 上一篇:Unity3D掃雷源碼和資源
- 下一篇:使用RTL8305NB的一款3口交換機
評論
共有 條評論