我正在尝试在 C 中重建一些使用 fsolve 函数的 Matlab 代码。从文档来看,它使用了“信任区域反射”算法(我已经使用 Levenberg-marquardt 算法构建了它,它的收敛方式完全不同)。任何人都可以推荐一个在 C/C++ 中进行这种优化的库吗?
问问题
4105 次
3 回答
3
您是否尝试过检查您的函数是否是凸函数,如果 LM 和其他一些凸优化算法收敛不同,则基函数很可能不是凸函数。您还检查了成本函数是否至少为 2 阶。如果是这种情况,则最小化成本函数的平方可能比单独最小化成本函数更好。
于 2012-11-26T11:32:54.870 回答
2
有两种通用算法可以保证全局收敛(在标准假设下,不要问:))。这些方法是线搜索和信任区域方法。如果您愿意,您可以在Nocedal-Wright:数值优化一书中阅读更多关于此主题的信息。
我最近没有尝试过 Knitro。
Ipopt是我尝试过的最强大的求解器,我强烈推荐它。它实现了线搜索方法,并用 C++ 编写。
于 2012-10-25T17:43:04.123 回答