x/(1+x)
x>0
x*inv_pos(x+1)>=lo;
Disciplined convex programming error:
Cannot perform the operation: {real
affine} .* {convex}
x/(1+x)
x>0
x*inv_pos(x+1)>=lo;
Disciplined convex programming error:
Cannot perform the operation: {real
affine} .* {convex}
You have to show you are modelling something convex.
Looks hard:
Given that x >= 0, and therefore, x+1 >= 0, how about multiplying both sides by (x+1)
to produce
x >= lo*(x+1)
which simplifies to
x >= lo/(1-lo)
x/(x+1)=1-1/(x+1)=1-inv_pos(x+1)
@jackfsuia 's formulation is a nice technique, which is useful for many problems, including when it appears inside log
. But in this specific case, mine produces a simpler constraint for the optimizer to handle (bound constraint vs. SOCP constraint to implement inv_pos
).