Open Viech opened 6 years ago
A few quick comments:
conelp
routine in SMCP is a very basic wrapper that calls solver_esd
which is not as robust as solver_feas
. If you want to solve LPs, QPs, or SOCPs, I would not recommend SMCP since it maps everything to a sparse SDP—you're better of with conelp
in CVXOPT. SMCP only has something to offer if you have one or more sparse psd cones.solvers.conelp(c, G, h, dims, kktsolver='qr')
r2 = blas.nrm2(rr)/max(1.0,blas.nrm2(by))
.Helllo @martinandersen, thanks for your response! I understand that SMCP is primarily an SDP solver, but for integrating it into PICOS, I have to make the decision whether it is also available for solving conic problems with no LMIs (if the user chooses to do so), which means that it will have to pass the respective testbenches.
Unfortunately, while kktsolver = 'qr'
does work around both #8 and #9, it gives me a subpar primal/dual solution for a different LP while it fails even harder for a variant of the problem above with a third pair of redundant constraints x, y ≤ 4
(this is part of a re-solving after modifications test, which for SMCP means solving the modified problem from scratch).
Should I disable SMCP for any problem without LMIs? Or would it be best to only solve pure SDPs with it, if I want the given accuracy? Are there any other options I can try?
I would recommend disabling SMCP for problems without LMIs — there is really no compelling reason to use it for such problems. SMCP's conelp
routine is basically a proof-of-concept wrapper that allows you to solve conic problems using a sparse SDP solver. For sparse SDPs it is better to use solver_feas
whenever possible.
A test case of mine solves the LP
which contains redundant constraints but is strictly feasible and has a unique optimum solution.
So I'm calling
smcp.solvers.conelp(c, G, h, dims)
withand
smcp.solvers.options
set towhich gives the following output. Note that the primal-dual gap becomes as small as
2.0e-10
but the solver does not terminate. Instead, the dual solution goes wild in the following iterations. Note further that the values forpcost
,dcost
, andgap
are inconsistent by a factor of 1e7 in the last line.Another potentially related issue is that if I set the option
debug
toTrue
, the solver raises an exception in or after the first iteration:My version of blas is
3.8.0
.