C ++中的非线性编程库

时间:2012-04-20 09:24:30

标签: c++ mathematical-optimization

我正在寻找有关非线性编程的C ++库的建议(不只是整数!)。

优先考虑积极维护的F / OSS解决方案,但积极维护提供免费评估版本的商业解决方案是可以接受的。

提前致谢!

修改:根据要求,以下是更多详情:

我正在研究的应用是简单的,它是关于最小化4次和更高次数(最多11次)的多项式,其中一小组(约20)的约束表示为不等式(同样,作为多项式,度数< = 4)。不过,我偶尔也可能要投入一些三角函数。无论如何,它始终是我正在处理的连续,可区分的功能。到目前为止,变量的数量范围从1到12,并且不会超出此范围。

最后,我需要一个适用于Windows的解决方案,但更适合跨平台的解决方案。

3 个答案:

答案 0 :(得分:6)

我不确定,但CERN的ROOT也许适合你。这是来自CERN本身的巨大的库(ROOT::Math::Polynomial类)。

我必须说,它确实不是一个“一分钟学习”的库,但它同时具有: console 可以实时处理所有数学内容(看起来类似于MathCAD cmd行) )和 libs dll ,您可以静态链接您的代码。它是一个跨平台的库。更重要的是,ROOT最强大的功能是你可以构建几乎所有类型的图表和图表。

答案 1 :(得分:4)

我所知道的最强大的库是IPOPT

它非常强大,它给了我化学工程问题的结果,即使使用商业解算器也无法解决。请查看success stories以获取更多应用示例。

答案 2 :(得分:2)

NLopt为十几种算法提供了可靠的C代码,包括COBYLA, 具有非线性不等式和等式约束的无导数优化的线性逼近的约束优化,作者:M. J. D. Powell。 补充:hereNLopt中几个非衍生优化器的运行 对于5d和10d中的Rosenbrock和Powell测试函数,它们对随机起点都非常非常敏感;因人而异。