Econding a Eisernberg's CP in CVX: log( convex ) DCP error


#1

I am trying to implement the Eisenbger’s convex formulation in CVX, which is as follows:
Given matrix A(m,n), vector e(1,m), and negative integer rho

variables x(m,n), and u(m,1);
$$max: \sum_{i=1}^m e(i)*log(u(i))$$
subject to:
$$u(i)=(\sum_{j=1}^n A(i,j) x(i,j)^\rho)^{1/\rho},\ \ \forall 1<= i<= m $$
$$\sum_{i=1}^m x(i,j) \le 1,\ \ \ \forall 1<=j<=n; \ \ \ \ x\ge 0$$

Here is my attempt that gives DCP error “Illegal operation: log( {convex} ).”… Kindly help resolve this.

rho=-1
for i=1:1:m
     C=[C eye(n)];
end;

variable x(m*n);
expression u(m);
for i=1:1:m
     u(i)=0;
     for j=1:1:n
          u(i)=u(i)+(abs(A(i,j))\*pow_p(x((i-1)*m+j),-abs(rho)));
     end;
end;
dual variable p;

maximize((-1/abs(rho))\*e*log(u));
subject to
p:        C*x <= ones(n,1);
          x>=0;
cvx_end


(Michael C. Grant) #2

I’m afraid this problem cannot be represented in CVX. Not every convex function can be represented using DCP rules, and thus not every convex model can be solved using CVX.


#3

Oh! Thank you so much for your reply.

No way out then? Do you think any other tool may work?