crossover.m

来自「继续上次传的简单遗传算法」· M 代码 · 共 22 行

M
22
字号
function [NewPop]=CrossOver(OldPop,pCross) 
[m,n]=size(OldPop);
r=rand(1,m);
y1=find(r<pCross);
len=length(y1);
if len>2 & mod(len,2)==1
    y1(len)=[];
end
NewPop=OldPop;
if length(y1)>=2
   for i=0:2:length(y1)-2
       hidecode=round(rand(1,n));
       crossposition=find(hidecode==1);
       holdposition=find(hidecode==0);
       NewPop(y1(i+1),crossposition)=OldPop(y1(i+1),crossposition);
       NewPop(y1(i+1),holdposition)=OldPop(y1(i+2),holdposition);
       NewPop(y1(i+2),crossposition)=OldPop(y1(i+2),crossposition);
       NewPop(y1(i+2),holdposition)=OldPop(y1(i+1),holdposition);
   end     
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?