Convex optimization problem about complex numbers


(guandi) #1

I want to solve a convex optimization problem about complex numbers, but I don’t know which example to refer to. I hope you can give me some advice. The form of convex optimization problems is as follows:

                                  Um=arg ⁡min⁡ Tr(Qm *Um ) 
                         subject to Um=Um(Um)†,diag(Um)=1,Um>=0

I hope that the operation time can be shortened as much as possible.


(Mark L. Stone) #2

Variables can be declared complex, as documented at http://cvxr.com/cvx/doc/basics.html#variables . Does that address your question?


(guandi) #3

Thank you for your answer, which is very useful to me. I have two questions to ask:

  1. It takes me about 40 minutes to restore a complex matrix (461 * 461). It takes about two days to calculate 100 times. It takes a long time. Can I optimize it?

  2. When the amount of complex data that I want to recover becomes smaller, the program will remind me that the calculated data is sparse and can not be processed later. How do I deal with this error to eliminate?

Thank you again for your reply.

The code part is as follows:(N=461)
cvx_begin SDP
variable U(N,N) complex
minimize(real(trace(Qm*U)))
subject to
U==GEZZ(U)
diag(U)==ones(N,1)
U>=0
cvx_end

look forward to your reply!!!


(Mark L. Stone) #4

Regarding item 1, what is GEZZ(U) ? As for speed, how much of the run time is prior to seeing the first solver output vs. while solver output is occurring? If you are not using Mosek and have access to it, try using it, because it is more reliable and numerically robust, and likely faster, especially on difficult problems, than SeDuMi or SDPT3. Try every SDP solver you have available. If you show the CVX and solver output, perhaps some of the more expert forum posters could determine something from seeing it. I think forum readers will need to know more about the numerical values in GEZZ(U) to determine whether there might be poor scaling, condition number, or otherwise which could be contributing to solution difficulty, and therefore to long solver run time. That said, CVX is not designed for speed, and in particular it is not designed to be fast in transforming model inputs for submission to the solver; rather, it is designed to save human model building (entry) time.

You need to be more specific regarding item 2. Can you show the smallest possible reproducible problem, complete with all input data, which exhibits the error, as well as showing all CVX and solver output, including the error messages?