How to express sum_{i,j} x[i][j]^(a+1)/w[i]^a?

I have a problem to express sum_{i,j} {x[i][j]^(a+1)/w[i]^a} where x and w are non-negative variables, and a is a non-negative rational number. I checked that this is convex.

If a = 1, I can express it using a Quadratic_over_lin function. I cannot generalize it.
I tried to express it using Power cone, however, it does not work because w[i] is inter-related to all x[i][j]. Is there any way to express this function?

Thank you.

  • This is not a forum for CVXPY (Python) but for CVX (Matlab)…
  • … but since you ask a general question about conic optimization: your summands are expressible with the power cone, see 8th entry in the “Simple bounds” section of http://docs.mosek.com/cheatsheets/conic.pdf
  • If a is natural then a chain of quadratic cones (equivalently a chain of quad_over_lin) can be used as hinted in How can I write this kind of constraint in cvx where a=2 is done

I have already checked it. However, there is a problem between power cone constraints
For example, my constraint can be formulated as power cone as follows:
t[i][j] >= x[i][j]^(a+1)/w[i]^a -> (t[i][j],w[i],x[i][j]) \in Power cone

If j \in {1,2}, we need two constraints for all i.
(t[i][1],w[i],x[i][1]) \in Power cone
(t[i][2],w[i],x[i][2]) \in Power cone
The problem is that w[i] is involved in both constraints. It makes an error.

MSK_RES_ERR_CONE_OVERLAP_APPEND (1307)
The cone to be appended has one variable which is already member of another cone.

So apparently you are using neither CVX, nor CVXPY but the native Mosek interface? As you can see in the manual, in the low-level Mosek interface every variable can appear in only one cone. The solution is to add a new variable w'[i]=w[i] and then use w'[i] in one cone and w[i] in the other. https://groups.google.com/forum/#!forum/mosek is a better forum for pure Mosek questions.

2 Likes

Thank you very much. I solve the problem!