我试图使用Microsoft Solver Foundation 2来解决一个相当复杂的情况,但是即使我尽可能愚蠢地模型化了一个UnsupportedModelException,我仍然坚持着。
有没有人有我做错什么的想法?
以下是重现问题行为所需的最少示例。Microsoft Solver Foundation约束
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 + B一个< = someValue中,所以如果有什么我愿意做的,最终是不是支持,请提前告知我。如果是这种情况,我也会欣赏一些其他求解器的建议,我可以使用.NET友好的界面(请仅使用知名的商业软件包)。
在此先感谢
此代码似乎正常工作,但不幸的是,这并没有完全解决我的问题。我想我遇到的问题是在建模级别(看起来像SFS无法解决我的问题,因为我已经制定,或者我没有以正确的方式使用它)。由于我要解决的问题需要二次约束 - 它已经是来自四次方程系统的问题的分解版本 - 我需要一种使用二次约束或建模技巧的方法。 – em70 2010-08-02 21:09:33