⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 change.m

📁 matlab编制的用模拟退火算法解决0-1背包问题的具体实例
💻 M
字号:
function x_r=change(x)
[m,n]=size(x);
clear m;

%随机取第i个物品
ki=rand;
ki=ki*n;
kri=round(ki);
ki=ki-kri;
if ki>0
    ki=kri+1;
else
    ki=kri;
end

%随机取第j个物品
kj=rand;
kj=kj*n;
krj=round(kj);
kj=kj-krj;
if kj>0
    kj=krj+1;
else
    kj=krj;
end
while kj==ki
   kj=rand;
   kj=kj*n;
   krj=round(kj);
   kj=kj-krj
   if kj>0
       kj=krj+1;
   else
       kj=krj;
   end
end
if x(ki)==0
    x(ki)=1-x(ki);
    if x(kj)==1
        x(kj)=1-x(kj);
    end
else
    x(ki)=1-x(ki);
    if x(kj)==0
        x(kj)=1-x(kj)
    else
        t=0;
        for k=1:n
            t=x(k)+t;
        end
        if t<n-1
            while x(kj)==1
                kj=rand;
                kj=kj*n;
                krj=round(kj);
                kj=kj-krj;
                if kj>0
                    kj=krj+1;
                else
                    kj=krj;
                end 
                while kj==ki
                    kj=rand;
                    kj=kj*n;
                    krj=round(kj);
                    kj=kj-krj;
                    if kj>0
                        kj=krj+1;
                    else
                        kj=krj;
                    end
                end
            end
            x(kj)=1;
        end
    end
end
x_r=x

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -