c++ - C++ 带约束的顺序非线性优化库

标签 c++ nonlinear-optimization

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/

相关文章:

c++ - 为什么指针衰减优先于推导的模板?

c++ - 在 C++ 中向现有 txt 文件添加新行

julia - NLopt SLSQP 放弃了好的解决方案,取而代之的是旧的、更差的解决方案

r - 带抽样权重的非线性回归(包调查)

python - 如何修复 Python Gekko 方程错误 "SyntaxError: keyword can' t be an expression”?

c++ - 为什么此方法返回 -858993460

c++ - 为什么我无法在 openCV 中打开 avi 视频?

c++ - 使用 C++ 读取和显示图像

python - 如何在 Mystic 中使用线性符号不等式创建约束?

mathematical-optimization - 一个非常大的非线性最小二乘优化的收敛