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