SDPT3 outputs wrong answer for my SOCP

    variable V(N,K) complex;
    variable t(N);
    minimize (weight'*t);
    subject to
        0 <= t <= sPmax;
        for ii=1:1:N
           norm(V(ii,:),2) <= t(ii); 
        for jj=1:1:K 
           imag(H(jj,:)*V(:,jj)) == 0;
           norm([H(jj,:)*V,sqrt(N0*W)],2) <= sqrt(1+d(jj))*real(H(jj,:)*V(:,jj));               

Hi, I am trying to solve the above SOCP using CVX. The problem is when I use SDPT3 as solver, it does output the status as “solved”. However, the result is obviously wrong. The running log says “lack of progress in infeas” after about 10 iterations. When I switch to SeDuMi, most of time, it can give me the right answer. However, sometimes “Inaccurate” or “Failed” may occur. I am quite confused what’s going on here. Please help.

When you say the result is obviously wrong, what do you mean? Also: sometimes this can happen if the problem parameters are poorly scaled. Can you give us some typical values of H and t?

The interior-point optimizer in SDPT3 and SeDuMi has to solve a linear equation system in each iteration to obtain a search direction. Your comments indicate that they are not capable of solving the linear equation system accurately enough. This can be caused by bad data.

You can also try MOSEK. It may or may not be better but may be worth the try. If MOSEK cannot solve the problem then I can look at the problem for you since I am associated with MOSEK.

Hi, thanks for your comment. You are right, it is due to the poorly scaled data. Since I didn’t expect that the data scale would cause so much trouble, I didn’t try in this way. Thanks again.

Here’s a useful section of the user guide for situations like this.