📄 crossover.m
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -