Hello everyone,

I’m trying to optimize a Logarithme function, which is convex. ( log (1+ matrix(10,5) * vector(5,1) , the matrix and and the vector are both nonnegative)

It’s been a while that i can’t handle with this error:

**Disciplined convex programming error: Cannot perform the operation {concave}*{affine}**

Which are major problems related to this error ?

thanks alot,

Kaoutar

Please state mathematically the complete problem you wish to solve. You need to make very clear what is input data to the optimization problem, and what are optimization (decision) variables.

The CVX functions `entr`

and `rel_entr`

can be used to model in CVX a number of convex problems involving log.

Thank you for your fast reply.

Actually, the entr function is an entropy which is a product of log and element per element of the function inside.

For my side, i do not need to have this kind of product.

Just a simple log ! as :

*cvx_begin*

*variable p(L,K) nonnegative*

*FC=0;*

*for k=1:K*

**_ FC=log(1+ Gamma(:,:,k)**p(:,k)); % Gamma is generated nonnegative_*

**_ FC= FC + norm(FC,1);_**

*end*

*maximize(FC);*

*subject to*

*norm(p,0) <= P_M*

*cvx_end*

Thank you

If Gamma is input data (not a CVX variable or expression), then `log(1+ Gamma(:,:,k)p(:,k))`

is concave (however, maybe you’re not showing us everything, otherwise you would not have received the error “Cannot perform the operation {concave}*{affine}”). But 1-norm, or any other norm of that, is non-convex. It appears, though, that you always have something of the form log(1 + nonnengative_number), so is always >= 0. Therefore, you don’t need 1-norm, and can instead use `sum`

, which is allowed.

In the constraint `norm(p,0) <= P_M`

, the 2nd argument, 0, can not be < 1. However, things are rather confusing because you declared `p`

to be a matrix variable, and I am guessing your intended constraint is not in terms of matrix norm, but perhaps in terms of vector norms (or sums) on rows or columns.