realmutate.m

来自「本算法为自适应遗传算法」· M 代码 · 共 46 行

M
46
字号

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 + =
减小字号Ctrl + -
显示快捷键?