C++ 中是否有用于带约束的顺序非线性优化的任何好的库?
我正在寻找不等式约束和/或上限和下限。
有一个stackoverflow question已经为此但不是所有的人都有限制。
我知道NLopt ,但它不适用于我的特定问题。还有其他的吗?
我终于找到了我一直在寻找的解决方案,如果有人感兴趣的话 lpOpt
最佳答案
您可以尝试的一种 SQP 算法是 DONLP2 .它最初是用 Fortran 77 编写的,但也有一个 ANSI C 版本。它使用密集代数,因此主要适用于中小型问题。它对学术用途是免费的。您需要直接向作者索取代码,按照链接中的说明进行操作。
更新 Sequential Quadratic Programming只是解决带有约束的非线性目标函数的一种方法,还有例如 interior point methods .应用内点方法的一个非常好的大规模开源 C++ 替代方案是 Ipopt (已在另一个 answer 中提到)。还有例如商业包装 KNITRO .如果您不能或不想提供目标函数和约束梯度,您还可以查看 COBYLA2,可以下载 C 版本 here .
如需更多灵感,您还可以引用 Decision Tree For Optimization Software ,其中列出了适用于各种不同问题的不同优化代码。
关于c++ - C++ 带约束的顺序非线性优化库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422617/