粒子群算法源程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);% 更新全局最佳路径,记录相应的序号