在C中寻找优化算法来替换Excel求解器
因为Excel Solver运行成千上万的优化很慢(原因是它使用电子表格作为接口),我试图在C中实现类似的(特定于问题的)求解器(使用Visual Studio 2010,在Win上7 64位平台).我会在VBA中通过Declare语句包含DLL,并且已经有了这样做的经验,所以这不是问题.
我的问题是最小化经验数据和非线性但平滑的目标函数之间的平方误差之和,并且问题将包括非负性(X> = 0)或甚至是积极性约束(例如,X> = 0.00000001),X表示决策变量. 我正在寻找一个强大的,经过验证的实施方案.它可能是已建立的图书馆的一部分. 或者,另一方面,建议用这样的基本约束来增加ALGLIB的Levenberg-Marquardt算法,例如拒绝每个不满足我约束的中间解决方案吗? (猜测不会这样做,但仍然值得一提) 解决方法
Levenberg-Marquardt方法的修改增加了对不等式约束的支持.我知道一个实现这种算法的库:
levmar(GPL). 如果您想修改现有算法,拒绝不良解决方案将无法做到,优化可能会被卡住.但是你可以进行变量替换,例如确保X> 0.1你可以使用t ^ 2 0.1而不是X. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |