📄 mclone_sub.m
字号:
function T = Mclone_sub(Pmax,cloneover,c,pm,pc,sx)
NC=ceil(sx*c);
Mmax=Pmax;
MC=[];
if NC==1
MC=[Mmax];
elseif NC>1
for i=1:NC
MC=[Mmax;MC];
end
end
T=[cloneover;MC];%克隆完成
[sx,sy]=size(T);
pop=T;
newpop=ones(sx,sy);
for j=1:2:sx-1;
if (rand<pc)
cpoint=round(rand*sy);
newpop(j,:)=[pop(j,1:cpoint) pop(j+1,cpoint+1:sy)];
newpop(j+1,:)=[pop(j+1,1:cpoint) pop(j,cpoint+1:sy)];
else
newpop(j,:)=pop(j,:);
newpop(j+1,:)=pop(j+1,:);
end
end%交叉完成
pop=newpop;
newpop=ones(size(pop));
for i=1:sx;
if (rand<pm)
mpoint=round(rand*sy);
if mpoint<=0
mpoint=1;
end
newpop(i,:)=pop(i,:);
if any(newpop(i,mpoint))==0
newpop(i,mpoint)=1;
else
newpop(i,mpoint)=0;
end
else
newpop(i,:)=pop(i,:);
end
end%变异完成
T=newpop;
% T=str2mat(setstr(T));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -