各种R二次编程求解器之间有什么区别?


9

我正在寻找一个软件包来帮助我解决一些二次优化问题,并且我发现至少有六个不同的软件包。根据页面:

QP(二次编程,90C20):cplexAPIkernlablimSolveLowRankQPquadprogRcplexRmosek

其中一些(Rmosek和cplexAPI)依赖于其他专有程序包,因此我对这些程序不感兴趣。

其他QP软件包之间的显着区别是什么?


您是否看过给出的参考文件?相同的过程/算法可以具有不同的实现。如果有的话,可以使用internal-pointtrust-regionactive-set方法解决QP问题。
usεr11852

1
还有osqp软件包-对于稀疏系统,它是目前R中最快的实现方式...
Tom Wenseleers

Answers:


11
  • Cplex(cplexAPI,Rcplex):不是开源的(但是每年有可更新的免费学术许可证)。它支持稀疏矩阵。是我在使用QP的包装纸吗?请注意,学术许可不允许在许多内核上使用它(例如通过mclapply())。
  • ipop(kernlab中的一个)在纯R中实现。这使其在大型应用程序中不必要地变慢。不支持稀疏矩阵。
  • limSolve不能解决成熟的QP,只能解决约束类型相同的问题。并非所有QP问题都可以用这种方式来解决,但是当可以时,它们就有一个明确的解决方案。不支持稀疏矩阵。
  • LowRankQP:根据我的经验,这是一个不错的选择(与其他开源代码相比要快)。不支持稀疏矩阵。
  • quadprog:Goldfarb和Idnani对偶和Primal-Dual解算器的基线实现。不支持稀疏矩阵,但可以快速解决中等大小的问题。
  • Rmosek:从未尝试过。

编辑。

自从我写了这个答案以来,新的软件包ipoptr现在可以在R- forge上使用。这篇 R-blogger帖子比较了使用Quadprog在纯QP上的性能。简而言之,ipoptr支持稀疏矩阵三元组,并且当设计矩阵稀疏时,它往往比quadprod快得多。但是,当设计矩阵密集时,quadprog仍然显得更快。


2
我的经验是,quadprog对于中小型问题仍然更快,而ipoptr仅在问题相当大时才更快。
Neal Fultz

2
最近有一组关于这些主题的博客文章。见,例如,blog.ryanwalker.us/2015/02/...
钱德勒


1
还要注意,quadprog需要采用二次形式的正定矩阵。
ae0709

还有osqp软件包-对于稀疏系统,它是目前R中最快的实现方式...
Tom Wenseleers
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.