Triple-class classification using CVX

Does CVX saying is has terminated with the optimum, but you say it is wrong? I don;t know whether that can happen, but perhaps it can. More frequently, its fails to converge and declares failure, even though CVXQUAD or native exponential cone solver might succeed.

The best way to handle this in CVX is CVX 2.2 + Mosek 9.x.(without CVXQUAD’s exponential.m replacement). This utilizes Mosek 9.x’s native exponential cone capability.

The second best way is CVXQUAD (very easy to install and free) . Your program only uses log_sum_exp, so doesn’t require reformulation for CVX. You just need to unzip the CVXQUAD zip file, add the requisite directory to your MATLAB path, and swap in CVXQUAD’s exponential.m file for CVX’s. 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

The next best way is to use CVX’s successive approximation method with the best solver you have. If you have MOSEK, don;t use CVXQUAD’s exponential.m replacement.

The wildcard option is to use CVX 3.0beta, without CVXQUAD, and with ECOS or SCS, which will use the solver’s native exponential cone capability. Unfortunately, CVX 3.0beta is riddled with bugs, so this is really a crap shoot. There have been many instances in which CVX 3.0beta delcares optimality, but the solution is wrong. SO caveta emptor.