In cvx 2.2, if I use the 9.1.9 mosek solver, do I need to use rel _ entr _ quad for the logarithm function? Or just use rel _ entr

In cvx 2.2, if I use the 9.1.9 mosek solver, do I need to use rel _ entr _ quad for the logarithm function? Or just use rel _ entr.

With CVX 2.2 and Mosek 9.x or 10.x as solver, just use log’ for logarithm.

If not using Mosek as solver, install CVXQUAD with its exponential.m replacement and use -rel_entr(1,x) in place of log(x). Or you can use -rel_entr_quad(1,x) in place of log(x). But there is no need to ever use rel_entr_quad, which from a user prespective is identical to rel_entr, but which requires CVXQUAD, or it will not run at all).

If Mosek is used, there is only a need or benefit to use CVXQUAD if its quantum, i.e., matrix level, functions are needed. I.e., quantum_entr(X), quantum_rel_entr(X,Y), trace_logm(X,C), trace_mpower(X,t,C), lieb_ando(X,Y,K,t)

For addtional details, see CVXQUAD: How to use CVXQUAD's Pade Approximant instead of CVX's unreliable Successive Approximation for GP mode, log, exp, entr, rel_entr, kl_div, log_det, det_rootn, exponential cone. CVXQUAD's Quantum (Matrix) Entropy & Matrix Log related functions .

it is better to use the latest (stable) Mosek version, currently 10.0.46, than to use Mosek 9.1.9, which is bundled with CVX 2.2. Or you could use Mosek 10.1, currently in beta, downloadable at Mosek - Latest: MOSEK 10.1 .

To make sure you don’t wind up using Mosek 9.1.9 which is bundled with CVX 2.2:

First download latest Mosek and install under MATLAB. Make sure mosekdiag succeeds. Then reinstall CVX so it will find the new solver.

Either delete or rename the mosek directory under CVX (before reinstalling CVX)
or
cvx_solver shows all the versions of all the solvers available to CVX. Choose the Mosek 10.x version, which might be called something like Mosek_2, then use cvx_solver Mosek_2 to get that version, and you can save_prefs.

In any event, cvx_solver will show all the versions available to CVX.


I tried to solve the feasibility problem with mosek10.0.46, and the result was directly wrong.

Follow the instructions to dump the Mosek task file from CVX as shown at 1 Technical Issues — MOSEK FAQ 10.0.46

cvx_solver_settings('write', 'dump.task.gz')

and send the resulting file to Mosek support.

Also, perhaps you can show your CVX program here? Even better if it is reproducible with all input data.

Most likely your data is unusual and hence it triggers a corner case i.e. a bug.

In order to make a robust I strongly recommend you follow the advice of @mark_l_stone.