{convex} .* {convex}

Nonconvex
Jan 5, 2022
G

I want to write this formula in code.
image
In CVX, I wrote the following code.

g_k=pow_p(u_k,-FL/2)*pow_p(uu,-1);

u_k and uu are variables. They are all positive numbers.
Matlab said Disciplined convex programming error:
Cannot perform the operation: {convex} .* {convex}

出错 * (line 36)
z = feval( oper, x, y );

出错 Algorithm1 (line 61)
g_k=pow_p(u_k,-FL/2)*pow_p(uu,-1);

I tried to write like
g_k=quad_over_lin(1,pow_abs(u_k,FL/2)*uu);
g_k=inv_pos(pow_abs(u_k,FL/2)*uu);
But there are still mistakes.

J

Is g_k convex? you need to make sure it is convex. if it is not, then you can never write it in CVX. if it is, please show us why.

M

That looks like basically a multiplication (or division) of variables (expressions), which is non-convex. Your only hope of using this in CVX is if there is some reformulation to not form g_k explicitly, but rather refromulate or “smudge” it into something else; but that seems rather unlikely.

@Greeny Please carefully read

Why isn't CVX accepting my model? READ THIS FIRST! .

Your posts repeatedly violate the guidance therein. You will find elaboration on the guidance from @jackfsuia in that link.

G
Replying to #3

I think gk is convex. I calculated that the Hessian matrix of the function is positive semidefinite.

J
Replying to #4

Replace {g_{k}} with {e^{-A}}. Then add the following constrains:

A\le \ln uu+\left( {{\beta _0}/2} \right)\ln {u_k}

It might work.

G
Replying to #5

Thank you so much. Your reply helps me a lot

M

I think @jackfsuia 's suggestion is along the lines of CVX’s http://cvxr.com/cvx/doc/gp.html . If you can follow all those rules, which depends on the entirety of your problem, then you could use CVX. if you can’t, then I think you are out of luck.