14

我正在研究线性和非线性编程(优化)框架的选项。

要求是:

  1. 支持大约线性和非线性规划问题。100-1000 个变量和最多约 1000 个约束(我认为这很简单)。非线性问题具有涉及多个变量的乘法或除法的约束——没有比这更复杂的了。

  2. 与 MS 环境(SQL Server、MS Access、.NET、Excel)很好地集成

  3. 很高兴能够支持临时问题定义(即某种脚本语言或支持在 Excel 前端定义和解决问题)

  4. 我会单独使用 Excel,但我还需要能够以编程方式(.NET 环境)与求解器交互以解决更大的问题。

对于编程访问,我打算为求解器开发一个抽象接口(这样我们可以在需要时更改求解器)。然后我偶然发现了已经有这个接口的MS Solver Foundation ( http://code.msdn.microsoft.com/solverfoundation )。我想知道它是否符合我们的其他要求以及用户对它的看法。

4

4 回答 4

4

好吧,事实证明 Microsoft Solver Foundation 不支持非线性编程。截至 2010 年 1 月,团队对此的官方说法是他们正在考虑,但不在他们的近期计划中。

所以我选择AMPL作为建模语言接口,选择 KNITRO作为求解器算法。KNITRO 看起来不错,因为它显然将三种算法合二为一(内点法的 2 种变体和活动集法的 1 种)。另请参阅KNITRO的 Wikipedia 页面。

我在一个由美国国家科学基金会和美国能源部在美国阿贡国家实验室资助的名为NEOS的优秀门户网站上尝试了两者的评估版本后,最终选择了 AMPL 和 KNITRO 。NEOS 提供了一个 Web 界面,用于使用 AMPL 或 GAMS 上传您的数学模型(对于某些求解器,还有一些其他求解器),然后通过结果网页和电子邮件获取您的结果。据说有一个用于提交问题的电子邮件界面,但我没有成功地让它工作。

现在,这一切都要花钱。KNITRO 和 AMPL 是商业产品。最终,该解决方案将花费大约 8000 美元。不便宜。如果您正在寻找免费的解决方案,我认为这些选项几乎仅限于求解器的 IPOPT(我也在 NEOS 上尝试过,发现它运行良好,但由于其他非技术原因我无法选择它)和放弃 AMPL 接口。您可以通过 IPOPT 的 API 设置您的问题。不过,与 Micrsoft Solver Foundation 的 API 不同,IPOPT 接口稍微复杂一些,而且最具挑战性的是,它要求调用应用程序实现计算模型非线性方程的一阶(可能还有二阶)导数的回调。

于 2010-02-17T14:04:58.920 回答
3

根据您列出的要求, Microsoft Solver Foundation似乎满足您的所有要求,然后是一些要求。阅读“什么是 Solver Foundation?” Solver Foundation 网站上的文档。它提到了线性规划,非线性规划,在.NET中开发,可以在Excel中使用,Solver Foundation还带有Microsoft Office Excel插件,以熟悉的界面提供完整的建模环境。

于 2009-12-18T16:52:11.197 回答
3

我在过去尝试(未成功)解决的一个问题上尝试了 Solver Foundation,并在 2 天内破解了它,包括学习 Solver API。求解器性能非常好,SFS(求解器基础服务)API非常棒

于 2009-12-27T04:33:30.927 回答
1

基于 GNU 的 GLPK 库是一个很好的免费选择。我已经抛出了 1000 和 1000 的列问题,不用担心。它需要几种不同的问题定义格式,但对我来说最容易通过 C 或 C++ API 使用。对它背后的引擎的改进一直在发生。我相信也有一些包装器可用(即 Perl、Python)。

于 2011-02-21T04:57:08.067 回答