crossover.m
来自「Advanced Human Mood detection technique 」· M 代码 · 共 55 行
M
55 行
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 + =
减小字号Ctrl + -
显示快捷键?