CVXOPT VS。开放式选择

计算科学 Python 凸优化
2021-12-12 03:43:20

顺便说一句,还有其他值得一提的 Python/C++ 高质量通用凸优化库吗?

2个回答

CVXOPT 仅解决(平滑和非平滑)凸问题,允许访问多个第三方凸求解器,保证最先进的最坏情况复杂性。您可以提出线性、凸二次、线性半定和许多其他凸类型的约束。

OpenOpt 解决一般(平滑和非平滑)非线性程序,包括整数约束问题。与 CVXOPT 不同,它没有求解半定程序的软件。求解器都是由 Dmitrey Kroshko 自己编写的,历史不长,因此测试可能有限。OpenOpt 本身不会与一般的第三方求解器接口。

但是,有“OpenOpt Framework”(http://openopt.org/OOFramework)与 IPOPT(在另一条评论中提到;它不能解决非平滑问题)、CVXOPT 和 Python 中可用的一些其他求解器接口。

除了这个接口,这些包之间没有任何关系。方法完全不同;唯一的共同点可能是 Python 语言和对 LAPACK 的访问。

对于凸问题,我还想推荐
CVX:Matlab Software for Disciplined Convex Programming http://cvxr.com/cvx
作者为此获得了今年非常有声望的 Beale-Hays-Orchard 计算数学编程卓越奖. 不过,它是用 Matlab 编写的。他们还有一个名为 CVXPY http://www.stanford.edu/~ttinoco/cvxpy/
的 Python“版本” ,但 CVXPY 实际上只是 CVXOPT 的一个非常好的和有用的“有纪律的”接口,其中一个可以确保当程序在语法上正确时,它是一个凸优化问题。

在大多数情况下,OpenOpt 只是与其他求解器的接口。CVXOPT 是 OpenOpt 底层的开源求解器之一,因此除非您有想要使用的商业求解器,否则无论如何您都可能需要安装 CVXOPT。AFAIK,CVXOPT 是开源库中最先进的,至少对于二阶锥编程和半定编程。