有没有关于带约束的顺序非线性优化的好的C++库?
我正在寻找不等式约束和/或上下界。
已经有一个stackoverflow问题,但并非所有问题都有约束条件。
我知道NLopt,但它对我的特定问题效果不佳。还有其他的吗?
我终于找到了我一直在寻找的解决方案,如果还有其他人感兴趣lpOpt
有没有关于带约束的顺序非线性优化的好的C++库?
我正在寻找不等式约束和/或上下界。
已经有一个stackoverflow问题,但并非所有问题都有约束条件。
我知道NLopt,但它对我的特定问题效果不佳。还有其他的吗?
我终于找到了我一直在寻找的解决方案,如果还有其他人感兴趣lpOpt
你可以尝试使用一个SQP算法DONLP2。它最初是用Fortran 77编写的,但也有一个ANSI C版本。它使用密集代数,因此主要适用于小到中等规模的问题。它可供学术使用免费。您需要直接向作者请求代码,并按链接中的说明操作。
更新 顺序二次规划 只是解决具有约束的非线性目标函数的方法之一,例如还有 内点法。一种非常好的大规模开源 C++ 替代方案,应用了内点法,是 Ipopt(已在另一个 答案 中提到)。还有商业软件包 KNITRO。如果您无法或不想提供目标函数和约束梯度,您也可以看看 COBYLA2,其中 C 版本可以在 此处 下载。
为了获得更多的灵感,您还可以查阅优化软件决策树,该决策树列出了适用于各种不同问题的不同优化代码。