DCP problem: Illegal operation: {concave} - {complex affine}

Hi all,

I am trying to optimize a concave and an affine function and I got a DCP error. The code looks like:

OmegaOld = zeros(2,2,3);
H = 1/sqrt(2)*(randn(2, 6, 3) + 1i*randn(2, 6, 3));
for i=1:d_users
     OmegaOld(:,:,i) = eye(6);


variable CovMat(6,6,3) complex
variable Omega(2,2,3) complex
expression rate(3,1);

for i=1:d_users
    rate(i) = log_det(Omega(:,:,i) + H(:,:,i)*CovMat(:,:,i)*H(:,:,i)')
                         - trace(inv(OmegaOld(:,:,i))*Omega(:,:,i));


There are other constraints but not shown here as the problem is with the objective function. Is there a way to reformulate the previous concave-affine objective fulfilling DCP ruleset?

Thank you very much.


I’m not sure why you are seeing {concave}-{complex affine}, but I can tell you that log_det is for symmetric/Hermitian matrices, and you have not declared Omega or CovMat to be hermitian.

Thanks for the reply. I have a constraint of the form: CovMat(:,:,i) == hermitian_semidefinite(tx_ant); So, yes, these matrices are hermitian. Any ideas with the {concave}-{complex affine}?
Thank you!

That’s not sufficient; you need to declare them as hermitian; e.g. variable Omega(2,2,3) hermitian. Also, try wrapping that trace statement in a real; i.e. real(trace(inv(