zkp.m

来自「matlab编制的用模拟退火算法解决0-1背包问题的具体实例」· M 代码 · 共 36 行

M
36
字号
function [X,P] =zkp(w,c,M,t0,tf)
[m,n]=size(w);
L=100*n;
t=t0;
clear m;
x=zeros(1,n);
xmax=x;
fmax=0;
while t>tf
    for k=1:L
        xr=change(x);
        gx=g_0_1(w,x);
        gxr=g_0_1(w,xr);
        if gxr<=M
            fr=f_0_1(xr,c);
            f=f_0_1(x,c);
            df=fr-f;
            if df>0
                x=xr;
                if fr>fmax
                    fmax=fr;
                    xmax=xr;
                end
            else
                p=rand;
                if p<exp(df/t)
                    x=xr;
                end
            end
        end
    end
    t=0.87*t;
end
%P=fmax;
X=xmax;
P=c*X'

⌨️ 快捷键说明

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