📄 realmutate.m
字号:
function realmutate(v)
global eeta n_distribution_m nvar
for i=1:size(v,1)
for j=1:nvar
if (rand(1)<=0.1)
y=v(i,j);
yl=limit_f(j);
yu=limit_u(j);
if (y>yl)
if (y-yl<yu-y)
delta=y-yl/yu-yl;
else
delta=yu-y/yu-yl;
end
indi=1.0/(n_distribution_m+1.0);
xy=1.0-delta;
rnd=rand(1);
if (rnd<=0.5)
val=2*rnd+(1-2*rnd)*xy^(n_distribution_m+1);
deltaq=val^indi-1.0;
else
val=2.0*(1.0-rnd)+2.0*(rnd-0.5)*xy^(n_distribution_m+1);
deltaq=1.0-val^indi;
end
y=y+deltaq*(yu-yl);
else
xy=rand(1);
y=xy*(yu-yl)+yl;
end
%判断是否越界
if (y>yu)
y=yu;
end
if (y<yl)
y=yl;
end
v(i,j)=y;
end
end
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -