Writing the f(x,y) = (y1^x1)*(y2^x2)*...*(yi^xi)

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?