Hi guys,

I met a problem while using cvxpy. My objective function is

max f(x,y) = (y1^x1)*(y2^x2)*…*(yi^xi)

0<xi<1,

sum(xi)=1,

y_min<yi<y_max,

variables: xi, yi.

yi may be complicated, I try to simplify it. I don’t know how to express which in cvxpy. Can you help me?

Thanks

The is not the cvxpy forum but the MATLAB cvx.

I don’t think the function is DCP representable when both the bases and the exponents are optimization variables.

However if x_i are independent of the y_i then it seems the maximum is obtained by taking x_i=1 for the biggest y_i. So your problem would be equivalent to

\mathrm{maximize} \max_i(y_i)

which is still not convex but representable with a mixed-integer model.

1 Like

Thanks a lot.

The function can be written as \mathrm{minimize} \sum_i -x_i*ln(y_i). I wonder whether the problem can be solved? In other words, how can I reformulate it and solve it?

Cvx is only useful if the function -y*ln(x) is convex.

Have you shown it is convex?