6.4 Power Cone Optimization¶
The structure of a typical conic optimization problem is
(see Sec. 12 (Problem Formulation and Solutions) for detailed formulations). Here we discuss how to set-up problems with the primal/dual power cones.
MOSEK supports the primal and dual power cones, defined as below:
Primal power cone:
\[\POW_n^{\alpha_k} = \left\{ x\in \real^n ~:~ \prod_{i=0}^{n_\ell-1} x_i^{\beta_i} \geq \sqrt{\sum_{j=n_\ell}^{n-1}x_j^2},\ x_0\ldots,x_{n_\ell-1}\geq 0 \right\}\]where \(s = \sum_i \alpha_i\) and \(\beta_i = \alpha_i / s\), so that \(\sum_i \beta_i=1\).
Dual power cone:
\[(\POW_n^{\alpha_k}) = \left\{ x\in \real^n ~:~ \prod_{i=0}^{n_\ell-1} \left(\frac{x_i}{\beta_i}\right)^{\beta_i} \geq \sqrt{\sum_{j=n_\ell}^{n-1}x_j^2},\ x_0\ldots,x_{n_\ell-1}\geq 0 \right\}\]where \(s = \sum_i \alpha_i\) and \(\beta_i = \alpha_i / s\), so that \(\sum_i \beta_i=1\).
Perhaps the most important special case is the three-dimensional power cone family:
which has the corresponding dual cone:
For example, the conic constraint \((x,y,z)\in\POW_3^{0.25,0.75}\) is equivalent to \(x^{0.25}y^{0.75}\geq |z|\), or simply \(xy^3\geq z^4\) with \(x,y\geq 0\).
For other types of cones supported by MOSEK, see Sec. 15.8 (Supported domains) and the other tutorials in this chapter. Different cone types can appear together in one optimization problem.
6.4.1 Example POW1¶
Consider the following optimization problem which involves powers of variables:
We convert (6.9) into affine conic form using auxiliary variables as bounds for the power expressions:
The two conic constraints shown in (6.10) can be expressed in the ACC form as shown in (6.11):
(6.11)¶\[\begin{split}\left[\begin{array}{ccccc}1&0&0&0&0\\0&1&0&0&0\\0&0&0&1&0\\0&0&1&0&0\\0&0&0&0&0\\0&0&0&0&1\end{array}\right] \left[\begin{array}{c}x_0\\x_1\\x_2\\x_3\\x_4\end{array}\right] + \left[\begin{array}{c}0\\0\\0\\0\\1\\0\end{array}\right] \in \POW^{0.2,0.8}_3 \times \POW^{0.4,0.6}_3.\end{split}\]
Setting up the linear part
The linear parts (constraints, variables, objective) are set up exactly the same way as for linear problems, and we refer to Sec. 6.1 (Linear Optimization) for all the details. The same applies to technical aspects such as defining an optimization problem, retrieving the solution and so on.
Setting up the conic constraints
To define the conic constraints, we set the prob.f
and prob.g
in such a way that \(Fx+g\) is the vector consisting of the six affine expressions appearing in the conic constraints of (6.10) in the same order. The domains and dimensions of affine conic constraints are specified using the structure accs
. Each power cone is specified using its dimension (3), followed by the number of additional parameters (2) and finally those parameters (the \(\alpha\) exponents for each cone).
Listing 6.7 demonstrates how to solve the example (6.9) using MOSEK.
function pow1()
clear prob;
[r, res] = mosekopt('symbcon');
% Specify the non-conic part of the problem.
% Variables number 1,2,3 correspond to x,y,z, variables 4,5 are auxiliary
prob.c = [-1 0 0 1 1];
prob.a = [1 1 0.5 0 0];
prob.blc = [2.0];
prob.buc = [2.0];
prob.blx = [-inf -inf -inf -inf -inf];
prob.bux = [ inf inf inf inf inf];
% Specify the cones as affine conic constraints.
% Two conic constrains with the power cone, both of dimension 3
prob.accs = [res.symbcon.MSK_DOMAIN_PRIMAL_POWER_CONE 3 2 0.2 0.8 res.symbcon.MSK_DOMAIN_PRIMAL_POWER_CONE 3 2 0.4 0.6];
% The matrices such that f * x + g = [x(1), x(2), x(4), x(3), 1, x(5)]
prob.f = sparse( [1, 2, 3, 4, 6], [1, 2, 4, 3, 5], ones(1, 5) );
prob.g = [0 0 0 0 1 0];
% That means
%
% (x(1), x(2), x(4)) \ in PPOW_3(0.2, 0.8)
% (x(3), 1, x(5)) \ in PPOW_3(0.4, 0.6)
%
% which is equivalent to
%
% |x(4)| <= x(1)^0.2 * x(2)^0.8
% |x(5)| <= x(3)^0.4
% Optimize the problem.
[r,res]=mosekopt('maximize',prob);
% Display the primal solution.
res.sol.itr.xx'
For a step by step introduction to formulating problems with affine conic constraints (ACC) see also Sec. 6.2 (From Linear to Conic Optimization).