Unrecognized field name "sol". Error in cvx_mosek

I am trying to solve a MINLP problem which includes a binary variable and an SDP constraint. I have been getting this error with MOSEK solver. The cvx_status shows “solved” when I remove binary variable and the constraint related to this variable and solve the problem with the remaining constraint. Does this mean that MOSEK cannot handle these binary variables along with SDP constraints. Or is it the issue with my code?

"Unrecognized field name “sol”.

Error in cvx_mosek

Error in cvxprob/solve (line 435)
** [ x, status, tprec, iters ] = shim.solve( At, b, c, cones, quiet, prec, solv.settings, eargs{:} );**

Error in cvx_end (line 88)
** solve( prob );**

Error in problem_to_solve (line 499)
cvx_end"

CVX 2.2 in principle supports MISDP problems. However, there is no solver currently available under CVX which can solve them. Mosek allows binary or integer variables with all cone types except for SDP.

MISDP problems can be solved in YALMIP using YALMIP’s bnb combined with Mosek, or with cutsdp combined with Mosek or another MILP solver. Further help on that should be directed to a YALMIP support forum.

Brute force option: if your problem only has a single scalar binary varaible, you could use CVX and solve an SDP for each of the 2 binary values. Or solve 2^n problems if a vector binary variable of length n.

1 Like

Thank you so much Mark for your quick response. Appreciate your time!

To further clarify: I think CVX 2.2 is written in such a way that even if there is no update to CVX, if a Mosek version comes out which supports binary (and integer) SDP, CVX will call it, and Mosek should solve it (as to whether Mosek achieves a small enough gap in a timeframe which is useful to you, that is another matter).

CVX calls Mosek as if it could handle an MISDP, even though the current Mosek version can’t handle MISDP.

1 Like