Solving SDP as an NLP with squared slack variable

127 Views Asked by At

I want to solve an SDP problem in the following standard form:

\begin{matrix} \min_{X} & \text{tr}(CX) \\ s.t & \text{tr}(A X) = b\\ & X \succeq 0.\\ \end{matrix}

However I want to write the problem as an NLP and solve using general NLP solver instead of solving and SDP problem (because later in my problem $b$ will be a quadratic variable). For that I introduced a quadratic constraint $X = L L^\top$ and removed the semidefinite constraint as follows:

\begin{matrix} \min_{X,L} & \text{tr}(C X) \\ s.t & \text{tr}(A X) = b\\ & X = LL^\top.\\ \end{matrix}

The problem I get is the solver fails to solve such a problem and returns an infeasible result, even when I use GUROBI, using the nonconvex solver. For some particular problem, knowing that the Cholesky decomposition has nonnegative elements, I added a constraint $L\geq 0$ and the results were correct.

Is there a good way to cast SDP as an NLP other than the quadratic slack constraint? Or maybe there is a way to improve the performance of the current method?