0

Microsoft Solver Foundation Express在我的程序中使用 eddition,Express 版本的模型大小受此链接的限制。

有什么办法可以查到多少:

  • 条款
  • 变量
  • 约束
  • 非零

我在我的模型中定义,使用代码?

4

1 回答 1

1

Model类维护DecisionsConstraints作为集合。您可以列举并计算它们。

要跟踪Term变量,您可以通过自己的构造函数方法创建和计算它们。

例子:

static Term NewTerm(Term t)
{
    noOfTerms++;   //  defined as class variable somewhere else
    return t;
}

static void Main(string[] args)
{
    var context = SolverContext.GetContext();
    var model = context.CreateModel();
    double sqrt2 = Math.Sqrt(2.0);

    var t = new Decision(Domain.RealRange(-sqrt2, +sqrt2), "t");
    var u = new Decision(Domain.RealRange(-2 * sqrt2, +2 * sqrt2), "u");

    model.AddDecisions(t, u);

    Term P = NewTerm(2 * t * t / (3 * t * t + u * u + 2 * t) - (u * u + t * t) / 18);

    model.AddGoal("objective", GoalKind.Maximize, P);

    Console.WriteLine("Constraints: " + model.Constraints.Count());
    Console.WriteLine("Decisions:   " + model.Decisions.Count());
    Console.WriteLine("Goals:       " + model.Goals.Count());
    Console.WriteLine("Terms:       " + noOfTerms);

    Solution sol = context.Solve();
    Report report = sol.GetReport();
    Console.WriteLine(report);
    Console.WriteLine();
}

您可能知道Microsoft不再积极推广Microsoft Solver Foundation

于 2015-10-25T15:26:42.927 回答