高效的自由/开源SOCP(二阶锥编程)求解器

时间:2014-04-02 17:14:49

标签: convex-optimization

我正在寻找关于评估速度的二阶锥编程解算器的推荐(或比较)。解决方案必须是免费的,以供非营利性使用或开源。

我对环境非常开放:独立的解决方案,库,Matlab,Python,R等都是可以接受的。

我的问题在约束中具有显着的稀疏性,我认为可以通过良好的解算器来加速计算。

4 个答案:

答案 0 :(得分:4)

您可能需要查看维护的基准

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

在那里你可以找到各种尺寸的SOCP和QP测试。大多数求解器会为您提供多个接口,没有问题。有关求解器的列表,请查看此处

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

我不确定它是否完整但你可以从这里开始。

根据我的经验,对于大尺寸问题,商业解决方案,如MOSEK和CPLEX,将提供更好的性能和稳定性,当然,考虑到我的用户名,我可能会有偏见。

请记住,现在大多数商业供应商都可以为您提供学术或试用许可。这对测试和比较来说非常方便。

在我看来,您可以考虑让用户选择使用哪个求解器。这需要做更多的工作,但它为您和用户提供了更多的灵活性。你可以在这里汲取灵感

Ipopt - COIN-OR项目: Cbc:

我建议你使用商业解算器来提出一个好的配方,这样的求解器可以根据需要快速解决。这是与其他人比较的基础。如果您有一些需要帮助的大规模问题,可以通过mosek.com与我们联系。

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

我建议你使用商业解算器来提出一个好的配方,这样的求解器可以根据需要快速解决。这是与其他人比较的基础。如果您有一些需要帮助的大规模问题,可以通过mosek.com与我们联系。

答案 1 :(得分:3)

您可能知道,cvxpy使用cvxopt 或ecos作为求解者 我只使用了一小部分ecos,因为LP不是锥形(比一个测试盒上的cvxopt快3倍)。 它的~5k行c + python包装,做到了一切!在scipy.sparse.csc格式;可能值得一看。

答案 2 :(得分:2)

除了CVXPY(http://www.cvxpy.org/)之外,您还可以考虑QCML(https://github.com/cvxgrp/qcml),它会生成特定于您的问题的C代码。

CVXPY的发展非常迅速。 Check constraints are ok in cvxpy with actual values中的问题来自完全过时的版本。假设您的问题不是太大(少于一百万个变量),CVXPY可能会满足您的需求。即使存在大问题,您也可以使用CVXPY中的SCS求解器来找到快速(虽然不太准确)的解决方案。

答案 3 :(得分:1)

在MIT许可下也有SCS (splitting conic solver),它是用C语言编写的,并且具有多个端口(Python,R ..)。