How to convert $\min x^{1.5}$ into a SOCP problem?

152 Views Asked by At

I want to optimize: $\min x^{1.5}$ (with some other constraints and variables, but they are not related to this question) using Second Order Cone Programming. Therefore, I wonder how I can do it? Thanks for any suggestions!

I have tried cvx and it automagically converted it to a SOCP successfully (and solved using ECOS). I have tried to read it's source code, but cannot understand it. To my best understanding (not sure if correct or not), it transforms the question to form the weighted geometric mean: $t \leq x^{\frac{2}{3}} 1^{\frac{1}{3}}$. Then it's gm_constrs functions' transforms it automagically into some Second Order Constraints of the following parameters (I do not know what var0~var3 is):

first constraint: t=var2+var3, X=[var2-var3, 2 * var0]
second constraint: t=1+var0, X=[1-var0, 2 * var3]

Where SOC is defined as

class SOC(Constraint):
    """A second-order cone constraint for each row/column.

    Assumes ``t`` is a vector the same length as ``X``'s columns (rows) for
    ``axis == 0`` (``1``).

    Attributes:
        t: The scalar part of the second-order constraint.
        X: A matrix whose rows/columns are each a cone.
        axis: Slice by column 0 or row 1.
...
```
1

There are 1 best solutions below

0
On

With hints given in the comments of this question, and by looking at source code of cvxpy (look at Dcp2Cone's cone_canon_methods's power_canon), I make the derivation as follows:

$$ v \ge u^{3/2}, u \ge 0 \\ \Leftrightarrow u \le v^{2/3} 1^{1/3} \ \text{(power_canon func)} \\ \Leftrightarrow u \le v^{1/2} 1^{1/4} u^{1/4} \ \text{(gm_constrs :: dyad_completion; and cookbook)} \\ \Leftrightarrow \begin{cases} v w \ge u^2 \\ 1 u \ge w^2 \\ \end{cases} \ \text{(look at gm_constrs output; and cookbook)} \\ \text{where w is a new variable} \\ \Leftrightarrow \begin{cases} gm(u,v,w) \\ gm(w,1,u) \\ \end{cases} $$