Matlab fmincons和C++的NLP求解器如ipopt之间的性能差距是多少?

use*_*128 6 c++ optimization matlab nonlinear-optimization ipopt

我即将为实时应用编写一个algorthim,它涉及一些高维NLP(非线性编程).

在实现之前,我需要对算法进行计时,以确定它是否适用于实时应用程序,因此我使用Matlab的内置fmincons作为基线.

根据经验表明,matlab算法的速度往往从慢到低于C++对应物,所以我想估计一下这种特殊情况可以带来什么样的性能提升?

由于我的工作主要与实时应用程序有关,因此我很少使用NLP(非线性编程),所以我问我的同事们,他们建议我尝试ipopt作为开始,我google了它的网站,没有针对Matlab的基准测试关于算法细节也没有太多话题(至少在Matlab中,检查它们的算法的细节并不难),所以我基本上对它的准确性/鲁棒性/最优性等几乎一无所知.

所以关于NLP的C++实现的任何帮助都将非常有用,非常感谢提前.

And*_*zos 2

许多此类问题都是由大型 O(n^~3) 矩阵乘法主导的。如果是这种情况,并且两个系统都使用相同的算法,那么性能将相似并且不依赖于语言,因为底层矩​​阵乘法函数无论如何都将在 asm 中本地实现。

如果算法不是由像这样的简单函数主导,而是需要大量的内存管理,那么 C++ 库将获胜很多(快 3-10 倍)。

(如果性能至关重要,那么许多人会使用 OpenCL 将数据转移到 GPU,GPU 是为此类数值计算而设计的,并且价格/性能差异在 20-100 倍范围内。或者您可以将其转移到集群如果您需要更快。)