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