📄 crossover.m
字号:
function newpop=crossover(pop,rank,newpop)
rw = zeros(20,1);
tot = sum(rank);
flag = 0;
for i = 1:20
temp = rank(i)/tot;
flag = flag + temp;
rw(i) = flag;
end
count = 3;
for i = 1:9
flag = 0;
s1 = rand();
for j = 1:20
if s1<rw(j)
flag = j;
break;
end
end
p1 = pop(:,flag);
s2 = rand();
for j = 1:20
if s2<rw(j)
flag2 = j;
break;
end
end
while flag2 == flag
s2 = rand();
for j = 1:20
if s2 <rw(j)
flag2 = j;
break;
end
end
end
p2 = pop(:,flag2);
cp = ceil(26*rand()) + 1;
for in = cp:27
temp = p1(in);
p1(in) = p2(in);
p2(in) = temp;
end
newpop(:,count) = p1(:);
count = count + 1;
newpop(:,count) = p2(:);
count = count + 1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -