Cannot perform the operation: {real affine} .* {concave}

Hello everyone, I am pretty new to cvx. I faced the problem of solving the following optimization problem. Please help me to formulate it properly in cvx. Thanks in advance.


My MATLAB code is (I just mention the necessary lines which needs to be corrected),
variable WW(1,L) nonnegative
variable QQ(M,M,L) semidefinite

% eqn 3.1
for i=1:L


You are multiplying the variable WW(i) with the concave expression log_det(...). Is that product jointly concave in W(I) and QQ(:,:,i) given the other constraints? Can you show us a proof? But it appears to me to be neither convex nor concave even in one dimension, even with the nonegativity (semidefinite) constraints on W and Q.

Thanks for the reply.

According to the authors, c(W_l,Q_l) is a monotonically increasing concave function for W_l > 0 and
Q_l \succcurlyeq 0. Noted that, Q is only semidefinite positive variable here.

Show us the proof.

I forgot to post this link before.

You are right about the function. So I tried primal decomposition method by fixing Q to get W and then using this W for getting Q but results are not good enough.

Can you suggest any MATLAB based solver which can take care of this problem (here H is complex matrix and Q is semidefinite positive variable)?

Thanks in advance.

You could try PENLAB under YALMIP. I think this problem is within scope of PENLAB, but unfortunately, that doesn’t mean it will succeed, which often it doesn’t.

Thanks again for your suggestion.

Can ‘fmincon’ handle the complex numbers and semidefinite positive variable?

In FMNCON, you would need to implement the SDP constraint indriectly, for instance by a parameterization such as X'*X in place of the psd matrix Q. But in doing so, you may introduce spurious stationary points (not present in the original problem), which can cause significant difficulty. I think YALMIP can handle the complex numbers for you by converting to an equivalent real variable problem before calling FMINCON.

Appreciate your help. Have a good day.

@yayadg Please delete your post in this thread and start a new topic. When you do, please ensure that your program, including the portion before cvx_begin, can execute without user input. Then tell us what difficulty or uncertainty you are experiencing. You have a long, complicated program, and we have no idea what it is supposed to do or model, so how can we tell you if it is correct?