8

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

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

提前致谢!

编辑:根据要求,这里有更多细节:

我正在处理的应用程序很简单,它是关于最小化 4 次或更高次数(最多 11 个)的多项式,并使用一组 (~20) 表示为不等式的约束(同样,作为多项式,次数 <= 4)。不过,我有时也可能不得不加入一些三角函数。无论如何,我要处理的总是连续的、可微的函数。目前,变量的数量范围从 1 到 12,并且不会超出此范围。

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

4

3 回答 3

6

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

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

于 2012-04-20T10:59:11.460 回答
4

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

它非常强大,它为我提供了即使使用商业求解器也无法解决的化学工程问题的结果。查看成功案例以获取更多应用示例。

于 2012-04-21T07:58:29.420 回答
2

NLopt为十几种算法提供了可靠的 C 代码,包括COBYLA,由 MJD Powell 编写的具有非线性不等式和等式约束的无导数优化的线性逼近约束优化。
补充:这里 有几个非衍生优化器在NLopt.
对于 5d 和 10d 的 Rosenbrock 和 Powell 测试函数,它们都对随机起点非常敏感;ymmv。

于 2012-05-12T17:19:54.267 回答