ECOS: An SOCP solver for embedded systems
read more
Citations
Model Predictive Control
CVXPY: A Python-Embedded Modeling Language for Convex Optimization
CVXPY: a python-embedded modeling language for convex optimization
Variations and extension of the convex–concave procedure
On the Total Energy Efficiency of Cell-Free Massive MIMO
References
Convex Optimization
Robust uncertainty principles: exact signal reconstruction from highly incomplete frequency information
Using SeDuMi 1.02, a MATLAB toolbox for optimization over symmetric cones
Primal-Dual Interior-Point Methods
Applications of second-order cone programming
Related Papers (5)
Frequently Asked Questions (18)
Q2. What is the affine direction of the cone?
Since the affine direction is based on linearization, the corrector direction aims at compensating the nonlinearities at the predicted affine step.
Q3. What is the function that is used to create the upper triangular part of the KKT?
Setup allocates memory and creates the upper triangular part of the expanded sparse KKT matrix K̃ as well as the sign vector S needed for dynamic regularization.
Q4. What is the current state of the art of C-code generators?
There are currently two implementations of C-code generators based on first order methods: µAO-MPC [22], [23] for linear MPC problems, and FiOrdOs [24] for general convex problems, which also supports SOCPs.
Q5. What is the simplest solution for a QP?
ECOS solves SOCPs in the standard form [11]:minimize cTx subject to Ax = bGx+ s = h, s ∈ K, (P)where x are the primal variables, s denotes slack variables, c ∈ Rn, G ∈ RM×n, h ∈ RM , A ∈ Rp×n, b ∈ Rp are the problem data, and K is the coneK = Qm1 ×Qm2 × · · · × QmN , (1)where Qm , { (u0, u1) ∈ R× Rm−1 | u0 ≥ ‖u1‖2 }for m > 1, and the authors define Q1 , R+.
Q6. What is the inverse operator for a second-order cone?
By using (14), (15) and (16), a multiplication or leftdivision by W and the inverse conic product require O(m) instead of O(m2) operations, as in the LP case.
Q7. What is the NT scaling for LPs?
The authors use the symmetric Nesterov-Todd (NT) scaling that is defined by the scaling point w ∈ K such that∇2Φ(w)s = z,i.e. w is the point where the Hessian of the barrier function maps s onto z.
Q8. What is the number of threads in the solver?
1. The solvers MOSEK and Gurobi were run in single-threaded mode (the problems were solved more quickly than with multiple threads), while the current versions of SDPT3 and SeDuMi do not have the option to change the number of threads.
Q9. What is the simplest way to solve a linear problem?
Search directions are generated by linearizing (CP) and choosing different µ, cf. §III-D. For µ→ 0, (CP) is equivalent to the Karush-Kuhn-Tucker (KKT)optimality conditions, which are necessary and sufficient conditions for optimality for convex problems.
Q10. What is the inverse operator for a long-only portfolio optimization problem?
The authors consider a simple long-only portfolio optimization problem [1, p. 185–186], where the authors choose relative weights of assets to maximize risk-adjusted return.
Q11. What is the simplest way to solve a problem?
The central path of problem (ESD) is defined by the set of points (x, y, s, z, τ, κ) satisfying0 0 s κ = 0 AT GT c −A 0 0 b −G 0 0 h −cT −bT −hT 0 x y z τ + µ qx qy qz qτ (s, z) ∈ K, (κ, τ) ≥ 0,( W−T s ) ◦
Q12. What is the inverse operator for second-order cones?
An efficient formulation of the inverse operator to ◦ (5) for second-order cones is given by:u \\ w , 1 %[ u0w0 − ν(ν/u0 − w0)u1 + (%/u0)w1] ,with % = u20 − uT1 u1 , ν = uT1 w1. (16)For Q1, u \\ w , w/u, i.e. the usual scalar division.
Q13. What is the optimum number of threads?
For these solvers, the authors observed a CPU usage of more than 100%, which indicates that SDPT3 and SeDuMi make use of multiple threads.
Q14. What is the risk-aversion parameter in ECOS?
This makes ECOS very attractive for use on embedded systems; in fact, it could be certified for code safety (such as for no divisions by zero) with reasonable effort.
Q15. What is the inverse of the KKT?
The Nesterov-Todd scalings (7), which propagate to the (3,3) block in the KKT matrix K as −W 2soc, are dense matrices involving a diagonal plus rank one term.
Q16. what is the inverse of the conic product?
A search direction can now be computed by solving two linear systems,K∆ξ1 = β1 and K∆ξ2 = β2, (9)and combining the results to∆τ = dτ − dκ/τ +[ cT bT hT ] ∆ξ1κ/τ − [ cT bT hT ] ∆ξ2, (10a)[ ∆xT ∆yT ∆zT ]T = ∆ξ1 + ∆τ∆ξ2, (10b)∆s = −W (λ \\ ds +W∆z) , (10c) ∆κ = − (dκ + κ∆τ) /τ, (10d)where u \\ w is the inverse operator to the conic product ◦, such that if u ◦ v = w then u \\ w = v (we give an efficient formula in (16)), andλ
Q17. What is the common way to perform a dynamic regularization of K?
The authors use the approximate minimum degree (AMD) code [14] to compute fill-in reducing orderings of K. AMD is a heuristic that performs well in practice and has low computational complexity.
Q18. What is the NT-scaling for LP-cone Q1?
Define the vectors∆ξ1 , [ ∆xT1 ∆y T 1 ∆z T 1 ]T ,∆ξ2 , [ ∆xT2 ∆y T 2 ∆z T 2 ]T ,β1 , [ −cT bT hT ]T ,β2 , [ dTx d T y d T z ]T ,and the matrixK , 0 AT GTA 0 0 G 0 −W 2 , (8) which the authors refer to as the KKT matrix in this paper, as it follows from the coefficient matrix in the central path equation (CP) after simple algebraic manipulations.