Hi,
I got an answer with zero term for some x_i when I perform a geometric programming (GP) using CVX with code below
cvx_begin gp
variables t x(N)
…
cvx_end
Is that possible?? Since what i know is that the domain of GP might be positive real variable.
I don’t want the answer contains any zero term. How could I control this program to get a feasible solution with all x_i > 0 ? Thanks.
It is entirely possible for one or more variables in a GP to have zero values. An assumption is made that x_i\gt0 when converting the problem to solvable form via the substitution y_i = \log x_i. However, if the convex solver finds a very large, negative value for y_i, then the conversion back to GP form x_i = e^{y_i} is likely to return a very small or zero value.
You will have to add artificial constraints to your problem, or normalize the problem in some way, if you want to force x_i to be positive. Remember, strict inequalities are treated as non-strict in CVX, so you will have to do something like x_i \ge 10^{-6}.
Still, if you find yourself having to force certain variables to be non-zero, it may suggest a larger, conceptual problem with your model, or an opportunity to simplify it.