I'm trying to solve a problem which is not strictly feasible. As such, I don't expect MOSEK to be able to do it, but I do expect it to tell me when it failed. I came up with this problem when trying to reproduce a result from a paper on quantum information (
https://arxiv.org/abs/1812.06057 ). I couldn't reproduce their result, because it was wrong. They claim that the solution to the SDP is 0.00094, when it is in fact 0. Now I don't know which solver they used, but presumably one that also claimed incorrectly that 0.00094 was the optimal solution.
In any case, when I formulate the SDP explicitly in the dual form, it gives me answer 4.8871e-05 and tells me that the solution status is OPTIMAL. Looking at the log, this doesn't seem to make sense, as one can see it's struggling to converge and that PRSTATUS = 5.34e-01.
When I formulate it explicitly in the primal form, it gives me answer 9.3454e-04 and now helpfully points out that solution status is UNKNOWN.
"If the optimizer terminates without locating a solution that satisfies
the termination criteria, for example because of a stall or other
numerical issues, then it will check if the solution found up to that
point satisfies the same criteria with all tolerances multiplied by the
value of MSK_DPAR_INTPNT_CO_TOL_NEAR_REL. If this is the case, the solution is still declared as optimal."
This is so bizarre! Why would anyone want that? Please just tell me that it failed! And indeed, if I set the parameter MSK_DPAR_INTPNT_CO_TOL_NEAR_REL to 1 instead of the default 1000, now the dual form also tells me that solution status is UNKNOWN.
I'm using the MATLAB interface of MOSEK through YALMIP. The exact version number is
MOSEK Version 9.3.20 (Build date: 2022-4-27 08:19:36)
Copyright (c) MOSEK ApS, Denmark. WWW: mosek.com
Platform: Linux/64-X86
The dumps are attached, as is the code to reproduce the problem.