Hello, everyone! I have a problem P1 which contains a constraint , I deal with p1+\frac1{s1} and p2+\frac1{s2} as P(2),P(3), I want to know which is right or they are both right?
The second tern in the first logarithm can be reformulated to match How to make the following concave function to fit cvx? - #2 by Mark_L_Stone , which allows that first log to be entered in CVX. The 2nd log term is convex due to the minus sign in front of the log; therefore, that would be the term which you would have to handle in some other way, such as by linearizing.
As for linearizing:
Unsafeguarded (no line search or trust region)Successive Convex Approximation (SCA) is unreliable. It might not descend (for minimization problem), i.e., iterates could get worse. It might not converge to anything; and if it does converge, it might not be to a local optimum of the original problem, let alone a global optimum. The solution of successive iterations, and therefore subproblem inputs, can become wilder and wilder, until at some point the solver fails, or makes erroneous determination of infeasibility or unboundedness.
Don’t apply crude, unsafeguarded (no Trust Region or Line Search) Successive Convex Approximation (SCA) to a new problem … unless your name happens to be Stephen Boyd.
There’s a reason high quality non-convex nonlinear optimization solvers are more than 10 lines long.
Thank you for your reply!
Sorry, I have not depicted it clearly. I have derived the first logarithm, but p1 \geq 0 ,and p0>0,p2>0.
As for the 2nd log term, can you give more specific illustrations for the way to handle it. The way I have thought just is that introducing a slack variable.
I use the SCA method dealing with it now.
Because I don’t know how to express log(1 + \frac{p0}{p1} - \frac{p0}{p1}* inv_pos (p1*s1+1)) in CVX expression? So I introduce the slack variable \eta
Check your work, because you did not correctly implement the formula I provided aa = p0/p1 and bb = 1/p1.
The formulation I provided involving inv_pos is in a form accepted by CVX. which is why I put it in that form. The argument of log is concave, which CVX allows. Slack variables are not required.