粒子群算法源程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
w_max : =0.9; % w_max 权系数最大值 w_min
=
:0.2;
% w_mi n 权系数最小值 v_max
=
:2; % 最大速度,为粒子的范围宽度 c1 = 2;
%学习因子1
c2 = 2;
%学习因子2
IndivdualBest=Group;%记录各粒子的个体极值点位置,即个体找到的最短路径IndivdualBestFitness=EachPathDis;% 记录最佳适应度值,即个体找到的最短路径的长度[GlobalBestFit ness,i ndex]=mi n(EachPathDis);% 找岀全局最优值和相应序号
%初始随机解
figure;
subplot(2,2,1);
PathPlot( no de,CityNum,i ndex,I ndivdualBest);
title('随机解');
%寻优
while(lsStop == 0) & (Iteratio n < Maxlterati on)
%迭代次数递增
Iterati on = Iterati on +1;
%更新全局极值点位置,这里指路径
for i=1:PopSize
GlobalBest(:,i) = Group(:,i ndex);
end
%求pij-xij ,pgj-xij交换序,并以概率c1 , c2的保留交换序
pij_xij=Ge nerateCha ngeNums(Group,I ndivdualBest);
pij_xij=HoldByOdds(pij_xij,c1);
pgj_xij=Ge nerateCha ngeNums(Group,GlobalBest);
Pgj_xij=HoldByOdds(pgj_xij,c2);
%以概率w保留上一代交换序
Velocity=HoldByOdds(Velocity,w);
Group = PathExcha nge(Group,Velocity); % 根据交换序进行路径交换
Group = PathExcha nge(Group,pij_xij);
Group = PathExcha nge(Group,pgj_xij);
for i = 1:PopSize % 更新各路径总距离
EachPathDis(i) = PathDista nce(Group(:,i)',CityBetwee nDista nee);
end
IsCha nge = EachPathDis
In divdualBestFit ness = In divdualBestFit ness.*( ~IsCha nge) + EachPathDis.*lsCha nge;% 体
更新个最佳路径距离
[GlobalBestFitness, index] = min(EachPathDis);% 更新全局最佳路径,记录相应的序号