I have an optimization problem, where I define a variable x (which is 3 dimensional) and then as one of the terms in the objective, I have to include this term, which amounts to normalizing the variable to 1:
Here, T is some observed data (Basically, sum the variable x along the third dimension, normalize it to one and then minimize the error with respect to T)
So, obviously since f(x)/g(x) leads to non-convex term, hence, it gives an error. But my question is since x is non-negative, can’t this be done by inv_pos because reciprocal powers in positive domain are convex? (It gives error when I use inv_pos to find the inverse.Is it because of the max?) What am I missing?
inv_pos Reciprocal of a positive quantity.
inv_pos(X) returns 1./X if X is positive, and +Inf otherwise.
X must be real.
For matrices and N-D arrays, the function is applied to each element.
Disciplined convex programming information:
inv_pos is convex and nonincreasing; therefore, when used in CVX
specifications, its argument must be concave (or affine).
help cvx/max
Disciplined convex/geometric programming information:
max is convex, log-log-convex, and nondecreasing in its first
two arguments. Thus when used in disciplined convex programs,
both arguments must be convex (or affine). In disciplined
geometric programs, both arguments must be log-convex/affine.
So the argument of inv_pos will be convex, not concave, and therefore violates DCP rules. Even if you got rid of the max, there would still be the CVX convex expression in the numerator multiplying it, which would also violated DCP rules.