主程序:clear;time=cputime;[fab]=matrix_gen(K,T,n,M,LT,Sij,wi);m=length(f);e=-ones(1,n+K*T);e(1:n)=zeros(1,n);e=sparse(e);u=ones(1,m);extx=sparse(zeros(m,T));blpx=sparse(zeros(m,10000));var2_br=-ones(1,n);[rmpobj,x]=rmp_solve(n,K,T.extx,f,a,b,e,var2_br);s=1;if(round(x)==x) optx=x; optobj=rmpobj; returnelse upb=rmpobj; lowb=greedy(f,a,b,m,n,K,T); indbou=find(min(abs(x(end-n+1:end)-0.5))==abs(x(end-n+1:end)-0.5),1,'first'); var_br=sparse(zeros(1,n)); var_br(1,indbou)=1; var2_br=sparse(-ones(2,n)); var2_br(1,indbou)=1 var2=find(var2_br(s,:)==1); blpf=f; blpa=a; blpa(indbou,m-n+indbou)=0; blpe=e; blpu=u; extx=sparse(zeros(m,2*T)); extx(:,1:T)=iexl(n,K,T,m,M,a,var2); if extx(:,1:T)==-ones(m,T) blpobj(s)=-1; blpx(:,s)=zeros(m,1); pool(s)=0; else pool(s)=s; end s=s+1; var2_br(2,indbou)=0; pool(s)=s; s=s+1; while(nnz(pool)>0) bpool=max(pool); spool=bpool-1; for i=spool:bpool if i==spool j=1; else j=2; end [blpobj(i),blpx(:,i)]=rmp_solve(n,K,T,extx(:,(j-1)*T+1:j*T),blpf,blpa,blpb(j:),blpe,var2_br(i,:)); if blpx(:,i)~=zeros(m,1) blpx(m-n+indbou,i)=1; end pool(i)=0; end if round(blpx(end-n+1:end,spool))==blpx(:,spool) if blpobj(spool)>lowb lowb=blpobj(spool); end end if max(blpobj)>lowb branch=find(max(blpobj)==blpobj,1,'first'); upb=blpobj(branch); blpobj(branch)=-blpobj(branch); indbou=find(min(abs(blpx(end-n+1;branch)-0.5))==abs(blpx(end-n+1:end,branch)-0.5),1,'first'); var_br((s+1)/2,:)=var_br(ceil(branch/2),:); var_br((s+1)/2,indbou)=1; var=find(var_br((s+1)/2)==1); blpa=a; blpa(var,m-n+var)=0; blpa=sparse(blpa); var2_br(s,:)=var2_br(branch,:); var2_br(s,indbou)=1; var2=find(var2_br(s,:)==1); blpb(1,:)=b; blpb(1,var2)=nonzeross(-a(var2,m-n+var2)); extx(:,1:T)=iexl(n,K,T,m,M,a,var2); if extx(:,1:T)=-ones(m,T) blpobj(s)=-1; blpx(:,s)=zeros(m,1); pool(s)=0; else pool(s)=s; end s=s+1; var2_br(s,:)=var2_br(branch,:); var2_br(s,indbou)=0; var2=find(varx_br(s,:)==1); blpb(2,:)=b; blpb(2,var2...