The 2nd derivative of t/(lam - t) is 2*lam/(lam - t)^3 It is convex for values of t <= lam., So t*inv+pos(lam - t) is convex. But it can not be entered directly into CV as such because it is in violation of iis DCP rules.
I’m busy and lazy, so I’ll leave this for the wizard of conic reformulation, @Michal_Adamaszek, or another smart poster to handle.
thanks for your time Mark!
I don’t know about conic reformulation but, if you can give me some suggestions, i’ll try to deepen on my own.
P.s.: sorry for mistake…the obj fun is t/(1-lamt). But also in this case, we fall in the case you cited since the 2nd derivative is 2lam/(1-lam*t)^3 that is convex for t<=lam.
Dear Erling, thanks for your intervention. Your proposal (variable change) seems to work even if the results are not in accordance with my expectation. I returned to my original problem (top of this post) by trying to minimize(sum(inv_pos(mou-lam)));
The problem is that, when i impose my constraint i observe a strange behavior (probably due to my scarce skill on cvx programming). Namely, the following two conditions that should be the same things, return different results.
If by any chance all your \lambda_i are positive, I can propose the following. Perform the change of variable t_i = 1/\mu_i, so that your problem is equivalent to
From a coding point of view, I think that quadoverlin understands that the x_i should be positive. And you might prefer the constraint 1/t_i < \lambda_i using invpos.
I think the following will work to implement @Erling’s suggestion: {1,t_i,mu_i - lambda_i} == rotated_lorentz(1)
and similarly for the other rotated quadratic cones.
Note that the argument of rotated_lorentz should be the dimension of the first element on the left-hand side, which in this case is 1, which has dimension 1.
I didn’t catch a thing (i know it’s my fault about scarce skills in cvx programming): after substitution t_i=1/(\mu_i - \lambda_i), how can i declare \mu_i and \lambda_i in the rotated Lorentz expression? You maybe mean (1,t_i, \mu_i - \lambda_i) = (1, t_i , 1/t_i) ?
Mark Stone, thanks for your support. I’m trying to interpret Erling’s suggestion since i cannot understand if mu_i and lambda_i have to be expressed in function of t_i or declared as variables.