【问题标题】:Does Microsoft Solver Foundation fit my needs?Microsoft Solver Foundation 是否符合我的需求?
【发布时间】:2009-07-30 14:22:25
【问题描述】:

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

要求是:

  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)。我想知道它是否符合我们的其他要求以及用户对此的看法。

【问题讨论】:

    标签: ms-solver-foundation


    【解决方案1】:

    事实证明,Microsoft Solver Foundation 不支持非线性编程。截至 2010 年 1 月,团队的official word 表示他们正在考虑,但不在他们的近期计划中。

    所以我选择AMPL 作为建模语言接口,KNITRO 作为求解器算法。 KNITRO 看起来不错,因为它显然将三种算法合二为一(Interior Point Method 的 2 个变体和Active Set method 的 1 个变体)。另请参阅KNITRO 的维基百科页面。

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

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我尝试了 Microsoft Solver Foundation,但它不支持非线性问题。
    • 截至 2010 年 11 月 Solver Foundation 3.0 支持非线性模型
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多