qcross1.m
来自「一种带量子门的改进的遗传算法matlab源程序。」· M 代码 · 共 41 行
M
41 行
function ret=Qcross1(pcross,chrom,sizepop,lenchrom)
% 单点交叉
for i=1:sizepop
% probability of crossover
pick=rand;
if pick>pcross
continue; % go to next "for" loop
end
% select two individuals 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
% 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 + =
减小字号Ctrl + -
显示快捷键?