首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft Solver Foundation约束

Microsoft Solver Foundation约束
EN

Stack Overflow用户
提问于 2010-05-09 22:06:15
回答 2查看 2.4K关注 0票数 1

我试图使用Microsoft 2来解决一个相当复杂的情况,但是,即使我尽可能地降低模型,我仍然被UnsupportedModelException困住了。

有人知道我做错了什么吗?

以下是重现问题行为所需的最少示例。

代码语言:javascript
复制
var ctx = SolverContext.GetContext();
var model = ctx.CreateModel();
var someConstant = 1337.0;

var decisionA = new Decision(Domain.Real, "decisionA");
var decisionB = new Decision(Domain.Real, "decisionB");
var decisionC = new Decision(Domain.Real, "decisionC");

model.AddConstraint("ca", decisionA <= someConstant);
model.AddConstraint("cb", decisionB <= someConstant);
model.AddConstraint("cc", decisionC <= someConstant);

model.AddConstraint("mainConstraint", Model.Equal(Model.Sum(Model.Abs(decisionA), decisionB, decisionC), someConstant))

model.AddDecisions(decisionA, decisionB, decisionC);

model.AddGoal("myComplicatedGoal", GoalKind.Minimize, decisionC);

var solution = ctx.Solve();

solution.GetReport().WriteTo(Console.Out);

Console.ReadKey();

请考虑一下,我的实际模型一旦完成,就应该以a_a+b_a <= someValue的形式包含一些约束,所以如果我最终不支持的话,请提前告诉我。如果是这样的话,我也会很感激其他一些具有.NET友好界面的解决者的建议,我可以使用这个界面(请只使用著名的商业软件包)。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-08-02 08:44:23

从这个链接抓取源代码并尝试(它有几个Model.Abs)。如果它死了,那么您的设置就有问题了,最短的解决方案是卸载、重新启动和重新安装。

http://geekswithblogs.net/cyoung/archive/2009/02/25/129672.aspx

好的,既然您已经提到了二次约束,那么至少Express版本肯定不支持它们:

http://code.msdn.microsoft.com/solverfoundation/Thread/View.aspx?ThreadId=2756

企业版可能会花费$$$$ --如果你有“学术性企业”,它仍然没有Gurobi解决者,所以在考虑离开你的钱之前,最好向他们发送一些具体问题( http://gurobi.com/ ),并要求提供一些担保,以防他们说会处理,但不会。

票数 1
EN

Stack Overflow用户

发布于 2010-05-10 15:34:23

我认为在使用约束之前,需要将决策添加到模型中。如果您在创建决策之后添加了这行代码,那么您的代码适用于我:

代码语言:javascript
复制
model.AddDecisions(decisionA, decisionB, decisionC);

内森

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2799360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档