How to explain this?


#1

25|0.820|0.529|2.3e-10|1.7e-12|1.4e+05|-4.124163e+09 -4.124253e+09| 0:0:12| spchol 2 2
26|0.833|0.784|4.4e-10|4.9e-13|5.3e+04|-4.124189e+09 -4.124226e+09| 0:0:12| spchol
SMW too ill-conditioned, switch to LU factor, 1.0e+00. splu 2 1
27|0.888|0.746|2.5e-10|1.7e-13|2.1e+04|-4.124202e+09 -4.124216e+09| 0:0:13| splu 2 1
28|0.621|0.783|2.8e-10|5.9e-14|9.5e+03|-4.124205e+09 -4.124212e+09| 0:0:13| splu 2 1
29|0.620|0.708|3.5e-10|2.7e-14|4.7e+03|-4.124207e+09 -4.124210e+09| 0:0:14| splu 3 1
30|0.632|0.790|4.4e-10|9.9e-15|2.1e+03|-4.124208e+09 -4.124210e+09| 0:0:14| splu 3 1
31|0.739|0.810|4.8e-10|3.3e-15|7.6e+02|-4.124209e+09 -4.124210e+09| 0:0:15| splu 4 1
32|0.945|0.938|4.1e-10|4.8e-16|1.4e+02|-4.124209e+09 -4.124209e+09| 0:0:15| splu 6 1
33|0.910|0.914|3.0e-10|2.2e-16|1.8e+01|-4.124209e+09 -4.124209e+09| 0:0:16|
stop: max(relative gap, infeasibilities) < 1.49e-08

number of iterations = 33
primal objective value = -4.12420940e+09
dual objective value = -4.12420939e+09
gap := trace(XZ) = 1.83e+01
relative gap = 2.22e-09
actual relative gap = -2.47e-10
rel. primal infeas (scaled problem) = 3.01e-10
rel. dual " " " = 2.21e-16
rel. primal infeas (unscaled problem) = 0.00e+00
rel. dual " " " = 0.00e+00
norm(X), norm(y), norm(Z) = 4.4e+10, 7.6e+06, 1.1e+07
norm(A), norm(b), norm© = 3.2e+03, 2.3e+05, 4.7e+06
Total CPU time (secs) = 15.72
CPU time per iteration = 0.48
termination code = 0
DIMACS: 6.9e-09 0.0e+00 1.1e-15 0.0e+00 -2.5e-10 2.2e-09


Status: Solved
Optimal value (cvx_optval): +123514

In the process of task execution, the printed resultes contain the sentence
'SMW too ill-conditioned, switch to LU factor, 1.0e+00. splu 2 1 ',
Does anyone know what the meaning of the sentence is?


(Mark L. Stone) #2

It means SDPT3 was having numerical difficulties. It may be that your problem is poorly scaled, or otherwise ill-conditioned. But SDPT3 ultimately succeeded, so the switch apparently got SDPT3 through its difficulty.

The source code that generates that message is at https://github.com/sqlp/sdpt3/blob/master/HSDSolver/HSDlinsysolve.m .

If SDPT3 hadn’t printed out that information, i.e., if the source code were modified to not print out the message, or depending on the value of printlevel, you would have been none the wiser, in blissful ignorance of the turmoil under the hood, happy that the solver and CVX reported your problem was successfully solved.


#4

Thanks for your generous reply!