2

您好我正在使用 Microsoft Solver Foundation 解决线性规划问题,但变量已超过 1000,并提示以下错误:{“此版本产品已超出模型大小限制。请联系 Microsoft Corporation 获取许可选项。\ r\n限制:NonzeroLimit = 100000,MipVariableLimit = 2000,MipRowLimit = 2000,MipNonzeroLimit = 10000,CspTermLimit = 25000,Expiration = none。"}

有没有更好的高效求解器,可以接受超过 1000 个可以在 Visual Studio IDE 中工作的变量?谢谢。

4

4 回答 4

3

不确定您的确切含义:求解器“可以在 Visual Studio IDE 中工作?”

但是,如果您想要一个具有功能 C# 接口的大型(开源)LP 求解器,我会推荐lp_solve,下载地址在这里。求解器是用 C/C++ 编写的,但有一个全面且易于使用的 C# 包装器,它使用 P/Invoke 来调用各种lpsolve方法。

于 2012-09-18T06:40:47.403 回答
2

Hans Mittelmann 的基准提供了几个 LP 求解器的比较。如果您正在寻找高性能的免费求解器,我推荐CLPIPOPT。它们都有 C++ 接口,因此在 Visual C++ 中使用它们应该没有问题。好的商业求解器是CPLEXGurobi

正如 Marc Gravell 所说,您可以购买不受限制的企业版 Microsoft Solver Foundation,但请注意它已停产

于 2012-09-18T13:35:30.420 回答
2

Solver Foundation 似乎已被放弃——我怀疑我们是否会看到它的任何新版本。对于许多问题来说,变量限制太小了。我发现 Google OR Tools 很有用——他们在 GLPK 和 CBC 求解器(以及其他)周围放置了 .NET 包装器,并将其作为源代码发布。搜索“谷歌或工具”。这些求解器不如商业求解器快(请参阅上面的 vitaut 帖子中链接的基准) - 但商业求解器的价格通常在 6-12k 英镑的价格范围内。

于 2013-02-07T11:45:08.177 回答
1

我不知道您目前有多少约束,但是(如果您的约束少于 1000 个)您可以采用对偶并有 1000 个约束而不是变量,然后仍然使用您当前的 Microsoft Solver Foundation 版本。采取双重自动化应该不会太难。

于 2012-10-07T17:27:53.407 回答