我正在尝试使用Microsoft Solver Foundation 2来解决一个相当复杂的情况,但是即使我尽可能地愚弄了模型,我也会陷入不支持的Modelexception。
有人知道我做错了什么吗?
以下是重现有问题的行为所需的最少示例。

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+ba <= someValue,因此,如果我愿意做的最终不支持,请事先让我知道。如果是这样的话,我也很感谢您可以使用的其他一些求解器提出的建议(请只有众所周知的商业套餐)。

提前致谢

有帮助吗?

解决方案

从此链接中获取源并尝试(它具有多个型号。如果它死了,那么您的设置出了问题,最短的解决方案是卸载,重新启动和重新安装。

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/ )并要求提供一些保证,以防万一他们说会处理,但事实并非如此。

其他提示

我认为您需要在模型中使用决策,然后将其在约束中使用。如果您在创建决策后添加此行,您的代码对我有用:

model.AddDecisions(decisionA, decisionB, decisionC);

内森

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top