Why you should not use off the shelf convex solvers if you care about performance
Off the shelf solvers such as ECOS, SCS, Mosek, or Gurobi are good for prototyping and modest performance, but if you care about solving one problem class extremely quickly then these solvers will not give you maximum performance. In this post we will investigate a particular problem class (robust portfolio optimization) and solver (PIPG) to show how we can beat all off the shelf SOCP solvers by tuning our solver to our problem class.
Formulate problem
Talk about classical case then extend to chance constraints
page 216 https://web.stanford.edu/~boyd/papers/pdf/socp.pdf
PIPG natively handles quadratic objectives. Most SOCP solvers need to put the quadratic objective in the constraints which results in a larger KKT system to solve.
We will use PIPG which I have an upcoming blog post about (cite xPIPG) You take a step in your gradient direction augmented with the constraint gradient direction, then you do projection and dual update PIPG uses projections to exactly satisfy set D constraints at every iteration
Parse problem into PIPG canonical form
Three constraints: SOC on all of x, non-negative orthant constraints on all elements of x, and equality constraint on x Try putting SOC into D and no shorting into K and vice versa.