📄 cross.m
字号:
function ret=Cross(pcross,chrom,sizepop)
%浮点交叉
%随机产生两个个体
%随机判断能否交叉
%若能则随机产生交叉位置
%随机产生交叉系数
for i=1:sizepop
% 选择两个体
pick=rand(1,2);
while prod(pick)==0 %求pick中各元素之积,这里是判断pick中是否有零元素
pick=rand(1,2);
end
index=ceil(pick.*sizepop);%找出待交叉的两个个体的下标
% 随即交叉的节点
pick=rand;
while pick==0
pick=rand;
end
if pick>pcross
continue; %不能交叉
end
%随即交叉的位置
pick=rand;
while pick==0
pick=rand;
end
pos=ceil(pick.*7);%找出交叉的位置,即对第几个变量开始交叉
pick=rand;
v1=chrom(index(1),pos);
v2=chrom(index(2),pos);
chrom(index(1),pos)=pick*v2+(1-pick)*v1;
chrom(index(2),pos)=pick*v1+(1-pick)*v2;
end
ret=chrom;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -