由于 Excel Solver 在数以千计的优化上运行起来非常慢(原因是它使用电子表格作为界面),我试图在 C++ 中实现一个类似的(特定于问题的)求解器(使用 Visual Studio 2010,在 Win 7 64 位平台)。我将通过 VBA 中的 Declare 语句包含 DLL,并且已经有这样做的经验,所以这不是问题。
我的问题是最小化经验数据与非线性但平滑的目标函数之间的平方误差之和,问题将包括非负性(X>=0)甚至正性约束(例如 X>=0.00000001) , X 表示决策变量。
我正在寻找一个健壮的、经过验证的实现。它可能是已建立图书馆的一部分。例如,我已经查看了 ALGLIB 存储的内容(请参阅http://www.alglib.net/optimization/),似乎他们的算法中只有一种接受有界约束。但是我不知道它的价值,这就是为什么我试图收集一些意见。
或者,另一方面,是否建议使用此类基本约束来增强 ALGLIB 的 Levenberg-Marquardt 算法,例如通过拒绝每个不满足我的约束的中间解决方案?(猜猜不会这样做,但仍然值得一问)