Im trying to find such a solution that maximizes f(x,y)=xlog(1+y) with x,y >1/5 and x*y<1 using CVX on matlab.
The problem is on trying to reformulate the function to be convex and feasible to optimize.
I try to use rel_entr function for example:
with the transformation z = x/y the function can be expressed as x*log(1+x/z)=rel_entr(x+z,z)+rel_entr(z,x+z) and the constraints x > 1/5, x >= z/5, and x^2 - z < 0
With that trying to use CVX
cvx_clear
cvx_begin
variable x
variable z
maximize( rel_entr(x+z, z) + rel_entr(z, x+z) )
subject to
x >= 1/5;
x >= z/5;
x^2 - z <= 0;
cvx_end
but it give me the problem output:
Error using cvxprob/newobj (line 57)Disciplined convex programming error:Cannot maximize a(n) convex expression.
Error in maximize (line 21)newobj( prob, ‘maximize’, x );
I already now the solution computed with fmincon but the idea is to reformulate the problem to be able to solve it on CVX
Optimal values:
x = 5
y = 0.2
Maximized f(x,y) = 0.91161