repair.m

来自「遗传量子算法求解背包问题Matlab源码」· M 代码 · 共 29 行

M
29
字号
%repair 修改超重的问题解,即选择的物品重量不能超过限重C
overfiled=0;%不超重
for j=1:n
       if sum(x(j,:)*w')>C %超重
          overfiled=1;%超重符号
       end
       while overfiled 
             k=fix(1+rand()*(m-1));%选择其中一个物品放弃
             x(j,k)=0;
             if sum(x(j,:)*w')<=C%不超重了
             overfiled=0;
             end
       end
       while ~overfiled %不超重
              k=fix(1+rand()*(m-1));%尽可能的再多选一个物品
              x(j,k)=1;
             if  sum(x(j,:)*w')>C %超重了
                 overfiled=1;     
             end
       end
     x(j,k)=0;%将刚才选择后导致超重的那个物品丢弃
     x(j,:);
end
x;

        

    
    

⌨️ 快捷键说明

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