Efficient free/open-source SOCP (second order cone programming) solvers [closed]
Asked Answered
L

4

7

I am looking for a recommendation (or comparison) of solvers for second order cone programming with regard to evaluation speed. The solver must be free for non-profit use or open source.

I am fairly open regarding the environment: stand-alone solutions, libraries, Matlab, Python, R, etc. are all acceptable.

My problem has significant sparsity in the constraints which I believe can be exploited by good solvers to speed up the calculation.

Lin answered 2/4, 2014 at 17:14 Comment(0)
S
5

As you probably know, cvxpy uses either cvxopt or ecos as solver.
I've used ecos only a tiny bit, for LP not cones (3x faster then cvxopt on one testcase).
It's ~ 5k lines c + python wrapper, does everything! in scipy.sparse.csc format; might be worth a look.

Semiconscious answered 15/4, 2014 at 19:10 Comment(2)
Thanks, I did not yet know about cvxpy or ecos. I read the paper on ecos and its performance comparison is impressive. cvxpy looks like it could make life much easier. Do you have any other hints of python packages I should look at?Lin
Sorry, no. Cvxpy helps a little, but the solver is blackbox, opaque; see e.g. check-constraints-are-ok-in-cvxpy-with-actual-values . Also most of the ecos examples are Matlab, hardly any Python. I'd agree with @ac_mosek that a commercial or academic solver would get you up to speed quicker. You might try asking on scicomp.stackexchange.com though (with more info on problem size etc.) .Semiconscious
S
4

you might want to take a look to the benchmark maintained at

http://plato.la.asu.edu/bench.html

there you can find both SOCP and QP tests of various size. Most of the solvers would provide you with several interfaces, no issues on that. For a list of solvers look here

http://en.wikipedia.org/wiki/Second-order_cone_programming

I am not sure it is complete but you can start from here.

In my experience, for large size problems commercial solvers, as MOSEK and CPLEX, will give much better performances and stability, well of course I am biased as you might imagine given my username.

Remember that most of the commercial vendors nowadays can provide you either an academic or a trial license. This can be handy to tests and comparisons.

In my opinion, you may consider leaving to the user the choice on which solver to use. It is a little bit more work to do, but it gives much more flexibility to you and to the user. You can draw some inspiration here

Ipopt - COIN-OR Project: Cbc :

I suggest you to use a commercial solver to come up with a good formulation that such a solver can solve as fast as you want. This is then the ground to compare with others. If you have some nice large scale problems you need help with, you can contact us at mosek.com.

cbc: https://projects.coin-or.org/Cbc ipopt: https://projects.coin-or.org/Ipopt

Sass answered 2/4, 2014 at 20:42 Comment(0)
C
3

In addition to CVXPY (http://www.cvxpy.org/), you might also consider QCML (https://github.com/cvxgrp/qcml), which generates C code specific to your problem.

CVXPY has been improving very rapidly. The issues in Check constraints are ok in cvxpy with actual values are from a totally obsolete version. Assuming your problem isn't too large (less than a million variables), CVXPY will probably meet your needs. Even with large problems you can use the SCS solver in CVXPY to find a fast (though somewhat less accurate) solution.

Cuprous answered 10/8, 2014 at 5:2 Comment(0)
C
1

There exist also SCS (splitting conic solver) under the MIT licence, it is written in C and it has multiple ports (Python, R ..).

Campeche answered 20/11, 2019 at 13:55 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.