crossover.m

来自「多目标遗传算法应用于电火花机床参数优化」· M 代码 · 共 49 行

M
49
字号
function newArr=Crossover(betterArr)
nRow=size(betterArr,1);%Get the scale of the betterArr
global Pc
%act_Pc=rand(nRow,1);
%c=rand(nRow,1);
for i=1:nRow
%----------------------------
%Generate two different indexes
index1=ceil(nRow*rand);
index2=ceil(nRow*rand);
while index1==index2
    index1=ceil(nRow*rand);
    index2=ceil(nRow*rand);    
end
%---------------------------
act_Pc=rand;
if act_Pc<Pc
    c=rand;
   %[index1    index2    Pc   act_Pc Pc>act_Pc i]
    for j=1:12
    newArr(i,j)=betterArr(index1,j)*c+betterArr(index2,j)*(1-c);
    end
    newArr(i,1)=0.1*round(newArr(i,1)/0.1);
    newArr(i,7)=0.1*round(newArr(i,7)/0.1);    
    newArr(i,2)=round(newArr(i,2));
    newArr(i,3)=round(newArr(i,3));
    newArr(i,8)=round(newArr(i,8));
    newArr(i,9)=round(newArr(i,9));
    newArr(i,4)=round(newArr(i,4));
    newArr(i,5)=round(newArr(i,5));
    newArr(i,10)=round(newArr(i,10));
    newArr(i,11)=round(newArr(i,11));
    newArr(i,6)=round(newArr(i,6));
    newArr(i,12)=round(newArr(i,12));
else
    %[index1    index2    Pc   act_Pc Pc>act_Pc i]
    minIndex=min(index1,index2);
    newArr(i,:)=betterArr(minIndex,:);
end
end








⌨️ 快捷键说明

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