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