📄 select.m
字号:
function y=select(gt,pathlength,alpha)
%选择复制操作,主要思想是基于排名的轮盘赌选择
%alpha越大,则越择优复制进入下一代,推荐alpha=0.1
%gt为种群,length为种群中各个路径的长度
[var1,var2]=size(gt);%var1是种群个数popsize,var2是城市个数citynum
gtb=gt;
[aftercost,aftersort]=sort(pathlength,2);%在行上排序,行向量,var1个元素
%aftercost为排序后的矩阵;
%aftersort为原矩阵的置换序列,标明排序后目前元素在原矩阵元素的位置
%只为了获得aftersort,一维数组
%???更新种群
for i=1:var1 %popsize
gt(i,:)=gtb(aftersort(i),:);
end
gtb=gt;
for j=1:var1%popsize
posibility(j)=alpha*(1-alpha).^(j-1);%指数
end
p=[0 cumsum(posibility)];
%cumsum累计求和;形成一维向量
%生成刻度
pmax=max(p);
for i=1:var1%popsize
r=pmax*rand(1); %轮盘
for j=1:var1
if (r>p(j)&r<=p(j+1))
y(i,:)=gtb(j,:);%选择复制
break;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -