Emm*_*uel 14 ms-solver-foundation
我正在研究线性和非线性编程(优化)框架的选项.
要求是:
支持线性和非线性编程问题约.100-1000个变量和最多约1000个约束(我收集的很简单).非线性问题具有涉及多个变量的乘法或除法的约束 - 没有比这更复杂的了.
与MS环境(SQL Server,MS Access,.NET,Excel)很好地集成
很高兴支持临时问题定义(即某种脚本语言或支持在Excel前端定义和解决问题)
我会单独使用Excel,但我还需要能够以编程方式(.NET环境)与解决方案接口以解决更大的问题.
对于程序化访问,我打算为求解器开发一个抽象接口(因此我们可以根据需要更改求解器).然后我偶然发现了已经有这个界面的MS Solver Foundation(http://code.msdn.microsoft.com/solverfoundation).我想知道它是否符合我们的其他要求以及用户对它的看法.
事实证明 Microsoft Solver Foundation 不支持非线性编程。截至 2010 年 1 月,该团队对此的官方说法是他们正在考虑此事,但并不在他们近期的计划中。
因此,我选择AMPL作为建模语言接口,使用KNITRO作为求解器算法。KNITRO 看起来不错,因为它显然由三种算法合二为一(内点法的 2 个变体和活动集法的 1 个变体)。另请参阅KNITRO的 Wikipedia 页面。
在一个优秀的门户网站(名为NEOS)上尝试了 AMPL 和 KNITRO 的评估版本后,我最终选择了 AMPL 和 KNITRO,该门户网站显然是由美国国家科学基金会和美国阿贡国家实验室的美国能源部资助的。NEOS 提供了一个网络界面,用于使用 AMPL 或 GAMS(以及一些求解器和其他一些求解器)上传您的数学模型,然后通过结果网页和电子邮件返回您的结果。据说有一个用于提交问题的电子邮件界面,但我没有成功地让它发挥作用。
现在,这一切都需要花钱。KNITRO 和 AMPL 是商业产品。最终该解决方案的成本约为 8000 美元。不便宜。如果您正在寻找免费的解决方案,我认为求解器的选项几乎仅限于 IPOPT(我也在 NEOS 上尝试过,发现它运行良好,但由于其他非技术原因我无法选择它)并且放弃 AMPL 接口。您可以通过IPOPT 的API 设置您的问题。但与 Micrsoft Solver Foundation 的 API 不同,IPOPT 接口稍微复杂一些,而且最具挑战性的是,它要求您的调用应用程序实现计算模型非线性方程的一阶(也可能是二阶)导数的回调。建模语言接口(如 AMPL)会为您处理这个问题,因为它们能够根据用其语言编写的所有方程计算符号导数。
| 归档时间: | 
 | 
| 查看次数: | 8049 次 | 
| 最近记录: |