CVX error, Invalid constraint: {concave} == {real affine}

Nonconvex
Jan 26, 2015
P

I receive such a error information: Invalid constraint: {concave} == {real affine} for the code below

    cvx_begin sdp
    variable W(Nt,Nt,K) hermitian;
    variable nor(1,K);  
    minimize(....);
    subject to 
    for k=1:K 
   [W(:,:,k),W(:,:,k)*h(:,k);
    h(:,k)'*W(:,:,k),W(:,:,k)-inv_pos(nor(k))] == hermitian_semidefinite(Nt+1);
   [W(:,:,k), W(:,:,k)h(:,k); 
    h(:,k)'W(:,:,k),inv_pos(1-nor(k))] == hermitian_semidefinite(Nt+1);  
    W(:,:,k) == hermitian_semidefinite(Nt);
    nor(k)>=0;
    nor(k)<=1;
       end
       cvx_end

It seems that the use of inv_pos introduces convex expression and consequently causes the mistake. Do anyone knows how to solve the problem or rewrite this constrait?

M

FAQ: Why doesn’t CVX accept my problem? [READ THIS FIRST]

M

You might be able to change variables. Instead of using nor(k), create a new variable that is equal to 1/nor(k). Call it nori(k). Then you need only ensure that nori(k) is greater than or equal to 1. Of course, if your objective function involves nor(k), you may be stuck.

P

Thanks. But how if I also have a constraint: [W(:,:,k), W(:,:,k)*h(:,k);
h(:,k)’*W(:,:,k), inv_pos(1-nor(k)] == hermitian_semidefinite(Nt+1); There are same problems when I try to express inv_pos(1-nor(k)) with 1/nor(k).

M

I’m not sure there is anything to be done.