function [H1,N1,diagE,diagF,hx,Gap,max_hx,fx,Pg,Qg,xz1,dmaxOut1,xz2,dmaxOut2,xz3,dmaxOut3,xz4,dmaxOut4,PGR]=midResult(nodeNum,pgNode,opfGoal,z,l,u,w,... Pg,Qg,e,f,G,B,a,b,c,PG,Pd,Qd,k,xz1,dmaxOut1,xz2,dmaxOut2,xz3,dmaxOut3,xz4,dmaxOut4,times,accuracy,mismatch) %程序功能:计算每次迭代后的目标函数值和等式约束的最大不平衡量,并根据每步迭代结果修正光滑参数 %编写时间:2010年10月 Gap=l'*z-u'*w; %计算互补间隙 PGR=PG; if(opfGoal==2) sumP=sum(Pg); sumPd=sum(Pd); fx=sumP-sumPd; else if(opfGoal==1) fx=sum(a(pgNode).*PGR(pgNode).*PGR(pgNode)+b(pgNode).*PGR(pgNode)+c(pgNode)); else if(opfGoal==3) EE=e*ones(1,nodeNum); FF=f*ones(1,nodeNum); fx=-0.5*sum(sum(G.*((EE-EE').^2+(FF-FF').^2),2)); else if(opfGoal==4) EE=e*ones(1,nodeNum); FF=f*ones(1,nodeNum); fx=0.5*sum(sum(B.*((EE-EE').^2+(FF-FF').^2),2)); end end end end H1=G*e-B*f; N1=G*f+B*e; diagE=sparse(1:nodeNum,1:nodeNum,e,nodeNum,nodeNum); diagF=sparse(1:nodeNum,1:nodeNum,f,nodeNum,nodeNum); P=Pg-Pd; Q=Qg-Qd; dP=P-diagE*H1-diagF*N1; dQ=Q-diagF*H1+diagE*N1; hx=[dP;dQ]; fx=full(fx); max_hx=full(max(abs(hx))); fprintf('%4.0f %4.4e %4.4e %7.6f\n',k,Gap,max_hx,fx); %输出每次迭代结果 firstOK=0; if Gap