Hello,
I think I need extended precision for my semidefinite programming (SDP) problem. I downloaded a trial of Advanpix’s Multiprecision toolbox. This defines a new mp. class, which allows extended ‘quadrupole’ precision. Unfortunately, it doesn’t work well with cvx, in that when I need to define the constraints, say trace(transpose(F)*X) == 0 with X a semidefinite cvx and F is Multiprecision, both block-diagonal, it returns an error saying unsupported argument type. If I replace F by double precision analog, it works just fine, unfortunately I end up getting infinity or NaN for certain values of my parameters, which I think would be solved by extended precision. I was wondering if there is a way to use the mp constraint, rather than the double precision constraint. Thank you for your time.

None of CVX’s solvers support the Advanpix Multiprecision Toolbox either. .I think the closest thing to an optimizer which it supports is the Advanoix toolbox’s version of fsolve for solving systems of nonlinear equations. fsolve can not handle SDPs. However, you can certainly ask on the toolbox forum and see what the developer says.

MAPLE does have a nonlinear optimizer which can use arbitrary precision arithmetic, but last I knew, and i’d be shocked if this changed, ti will not handle SDPs.

MINOS, which is a general purpose nonlinear optimizer, does have a Quad Precision version http://stanford.edu/group/SOL/multiscale/talks/14informsQuadMINOS.pdf . You could try imposing a min(egi(A)) >= 0 constraint on a matrix A you need to be psd. But if there is multiplicity > 1 of zero eigenvalue, it will be non-differentiable and may cause difficulties However, there’s a good chance it will work…

Edit: Of course, if you are capable enough, you could try to program your own quad or higher precision SDP solver using Advanpix toolbox. That would be a non-trivial endeavor, however, in terms of time expenditure and degree of algorithm and numerical analysis knowledge needed…

Have you tired MOSEK 8? It is no longer in beta. It is supposedly more accurate/has better numerics than MOSEK 7.x, which was already far superior numerically to SeDuMi and SDPT3. See http://www.abstractsonline.com/pp8/#!/4182/presentation/18236 .

Hello,
Thank you very much for your help. I happened to stumble on SDPA-GMP, which is a high-precision SDP solver. I’ll take a look at MOSEK 8, as it could be more convenient for me if it has MATLAB integration.

Thanks for letting us know about SDPA-GMP. Per http://www.optimization-online.org/DB_FILE/2010/01/2531.pdf from January 2010, there is (was?) an online SDPA solver http://sdpa.indsys.chuo-u.ac.jp/portal/ which includes (included) SDPA-GMP, but my connection timed out trying to reach the site.

I don’t think it wil be as easy to set up and use as CVX, nor will it run quickly, but as they say, beggars can’t be choosers, so if it’s the only game in town …

On the other hand, you might as well give MOSEK 8 a try and determine whether that’s accurate enough for your needs. Please do report back on your findings with MOSEK 8, and with SDPA-GMP if you give it a try.

MOSEK (8) not only has MATLAB integration, it is an available solver under CVX Professional. So if you have CVX professional and MOSEK, you can just specify `cvx_solver mose`k if you have not already made it your default solver.

I guess I was a lazy bum for not googlng SDP quad precision or SDP arbitrary precision, either of which would have brought up SDPA. Doing so I also see SDPHAM6 http://www.math.umbc.edu/~potra/sdpham6/sdpham6Doc.pdf which includes a download link which works.

Interface to use SDPA-GMP under YALMIP (under MATLAB) https://github.com/giofantuzzi/mpYALMIP .