我試圖使用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