📄 realcross.m
字号:
function realcross(v)
global eeta n_distribution_m nvar
y1=0;
y2=0;
par1=0;
par2 =0;
bbeta =0;
expp =0;
beta =0;
aalpha=0;
rnd=0;
chld_1=0;
chld_2 =0;
yu=0;
yl=0;
for i=1:size(v,1)/2
if (rand(1)<=0.9)
for j=1:nvar
if (rand(1)<=0.5)
par1=v(i,j);
par2=v(i+size(v,1)/2,j);
yl=limit_f(j);
yu=limit_u(j);
if (abs(par1-par2)>0.000001)
if (par2>par1)
y2=par2;
y1=par1;
else
y2=par1;
y1=par2;
end
if (y1-yl>yu-y2)
bbeta=1+(2*(yu-y2)/(y2-y1));
else
bbeta=1+(2*(y1-yl)/(y2-y1));
end
expp=eeta+1.0;
bbeta=1.0/bbeta;
aalpha=2.0-bbeta^expp;
rnd=rand(1);
if (rnd<=1.0/aalpha)
aalpha=aalpha*rnd;
expp=1.0/(eeta+1.0);
betaq=aalpha^expp;
else
aalpha=aalpha*rnd;
aalpha=1.0/(2.0-aalpha);
expp=1.0/(eeta+1.0);
betaq=aalpha^expp;
end
chld_1=0.5*(y1+y2-betaq*(y2-y1));
chld_2=0.5*(y1+y2+betaq*(y2-y1));
end
if (chld_1<yl)
chld_1=yl;
end
if (chld_1>yu)
chld_1=yu;
end
if (chld_2<yl)
chld_2=yl;
end
if (chld_2>yu)
chld_2=yu;
end
v(i,j)=chld_1;
v(i+size(v,1)/2,j)=chld_2;
end
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -