91 lines
4.2 KiB
Matlab
Executable File
91 lines
4.2 KiB
Matlab
Executable File
%%*****************************************************************
|
|
%% sqlpsummary: print summary
|
|
%%*****************************************************************
|
|
%% SDPT3: version 4.0
|
|
%% Copyright (c) 1997 by
|
|
%% Kim-Chuan Toh, Michael J. Todd, Reha H. Tutuncu
|
|
%% Last Modified: 16 Sep 2004
|
|
%%*****************************************************************
|
|
|
|
function sqlpsummary(info,ttime,infeas_org,printlevel)
|
|
|
|
iter = info.iter;
|
|
obj = info.obj;
|
|
gap = info.gap;
|
|
relgap = info.relgap;
|
|
prim_infeas = info.pinfeas;
|
|
dual_infeas = info.dinfeas;
|
|
termcode = info.termcode;
|
|
reldist = info.reldist;
|
|
resid = info.resid;
|
|
dimacs = info.dimacs;
|
|
totaltime = info.cputime;
|
|
%%
|
|
preproctime = ttime.preproc; pcholtime = ttime.pchol; dcholtime = ttime.dchol;
|
|
predtime = ttime.pred; pstep_predtime = ttime.pred_pstep; dstep_predtime = ttime.pred_pstep;
|
|
corrtime = ttime.corr; pstep_corrtime = ttime.corr_pstep; dstep_corrtime = ttime.corr_dstep;
|
|
misctime = ttime.misc;
|
|
%%
|
|
if (printlevel >= 2)
|
|
fprintf('\n------------------------------------------------');
|
|
fprintf('-------------------\n');
|
|
fprintf(' number of iterations = %2.0f\n',iter);
|
|
end
|
|
if (termcode <= 0)
|
|
if (printlevel >=2)
|
|
fprintf(' primal objective value = %- 9.8e\n',obj(1));
|
|
fprintf(' dual objective value = %- 9.8e\n',obj(2));
|
|
fprintf(' gap := trace(XZ) = %3.2e\n',gap);
|
|
fprintf(' relative gap = %3.2e\n',relgap);
|
|
fprintf(' actual relative gap = %3.2e\n',-diff(obj)/(1+sum(abs(obj))));
|
|
if norm(infeas_org)
|
|
fprintf(' rel. primal infeas (scaled problem) = %3.2e\n',prim_infeas);
|
|
fprintf(' rel. dual " " " = %3.2e\n',dual_infeas);
|
|
fprintf(' rel. primal infeas (unscaled problem) = %3.2e\n',infeas_org(1));
|
|
fprintf(' rel. dual " " " = %3.2e\n',infeas_org(2));
|
|
else
|
|
fprintf(' rel. primal infeas = %3.2e\n',prim_infeas);
|
|
fprintf(' rel. dual infeas = %3.2e\n',dual_infeas);
|
|
end
|
|
fprintf(' norm(X), norm(y), norm(Z) = %3.1e, %3.1e, %3.1e\n',...
|
|
info.normX,info.normy,info.normZ);
|
|
fprintf(' norm(A), norm(b), norm(C) = %3.1e, %3.1e, %3.1e\n',...
|
|
info.normA,info.normb,info.normC);
|
|
end
|
|
elseif (termcode == 1)
|
|
if (printlevel >=2)
|
|
fprintf(' residual of primal infeasibility \n')
|
|
fprintf(' certificate (y,Z) = %3.2e\n',resid);
|
|
fprintf(' reldist to infeas. <= %3.2e\n',reldist);
|
|
end
|
|
elseif (termcode == 2)
|
|
if (printlevel >=2)
|
|
fprintf(' residual of dual infeasibility \n')
|
|
fprintf(' certificate X = %3.2e\n',resid);
|
|
fprintf(' reldist to infeas. <= %3.2e\n',reldist);
|
|
end
|
|
end
|
|
if (printlevel >=2)
|
|
fprintf(' Total CPU time (secs) = %3.2f \n',totaltime);
|
|
fprintf(' CPU time per iteration = %3.2f \n',totaltime/iter);
|
|
fprintf(' termination code = %2.0f\n',termcode);
|
|
fprintf(' DIMACS errors: %.1e %.1e %.1e %.1e %.1e %.1e\n',dimacs);
|
|
fprintf('------------------------------------------------');
|
|
fprintf('-------------------\n');
|
|
if (printlevel > 3)
|
|
fprintf(' Percentage of CPU time spent in various parts \n');
|
|
fprintf('------------------------------------------------');
|
|
fprintf('-------------------\n');
|
|
fprintf(' preproc Xchol Zchol pred pred_steplen corr corr_steplen misc\n')
|
|
tt = [preproctime, pcholtime, dcholtime, predtime, pstep_predtime, dstep_predtime];
|
|
tt = [tt, corrtime, pstep_corrtime, dstep_corrtime, misctime];
|
|
tt = tt/sum(tt)*100;
|
|
fprintf(' %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f ',...
|
|
tt(1),tt(2),tt(3),tt(4),tt(5),tt(6));
|
|
fprintf(' %3.1f %3.1f %3.1f %3.1f\n',tt(7),tt(8),tt(9),tt(10));
|
|
fprintf('------------------------------------------------');
|
|
fprintf('-------------------\n');
|
|
end
|
|
end
|
|
%%*****************************************************************************
|