📄 qacross.asv
字号:
function ret=Qcross(pcross,individuals.chrom,sizepop,lenchrom)
for i=1:sizepop
% select two children at random
pick=rand(1,2);
index=ceil(pick.*sizepop);
while prod(pick)==0 | index(1)==index(2)
pick=rand(1,2);
index=ceil(pick.*sizepop);
end
% probability of crossover
pick=rand;
if pick>pcross
continue; % go to next "for" loop
end
% random position of crossover
pick=rand;
while pick==0
pick=rand;
end
pos=ceil(pick.*sum(lenchrom));
% exchang tail
for j=pos:sum(lenchrom)
tail1=chrom(2*index(1)-1,j);
tail2=chrom(2*index(1),j);
chrom(2*index(1)-1,j)=chrom(2*index(2)-1,j);
chrom(2*index(1),j)=chrom(2*index(2),j);
chrom(2*index(2)-1,j)=tail1;
chrom(2*index(2),j)=tail2;
end
end
ret=chrom;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -