crossover1.m

来自「采用遗传算法对于加工问题的排序,使其最快.」· M 代码 · 共 25 行

M
25
字号
function [crossover_a,crossover_b]=crossover1(pc,copy_a,copy_b,job_total,pop_size)
crossover_a=copy_a;
crossover_b=copy_b;
for i=1:2:pop_size
    if rand<=pc
        find1=ceil(rand*job_total*(ceil(log2(job_total))+1));
        find2=ceil(rand*job_total*(ceil(log2(job_total))+1));
        if find1==find2
            add=ceil(rand*job_total*(ceil(log2(job_total))+1)); 
            find2=find2+add; 
            if (find2>job_total*(ceil(log2(job_total))+1)) 
                find2=job_total*(ceil(log2(job_total))+1); 
            end 
        end 
        if find1>find2
            swap=find1; 
            find1=find2; 
            find2=swap; 
        end 
        crossover_a(i,find1:find2)=copy_a(i+1,find1:find2);
        crossover_b(i,find1:find2)=copy_b(i+1,find1:find2);
        crossover_a(i+1,find1:find2)=copy_a(i,find1:find2);
        crossover_b(i+1,find1:find2)=copy_b(i,find1:find2);
    end
end

⌨️ 快捷键说明

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