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 + -
显示快捷键?