Microsoft Solver Foundation - 永远不会返回值

时间:2012-12-04 11:45:06

标签: asp.net c#-4.0 ms-solver-foundation

我需要将使用求解器插件的Excel电子表格移植到ASP.NET c#站点,我使用的是Solver Foundation 3.1无效。

方程是迭代的,需要满足两个条件才能确定两个决策值。

电子表格中的两个决策值设置为1

Ng = 1
Nv = 1

然后目标是在满足以下条件时找到Formula1的MAX:

Decision 1: Formula1 = _na
Decision 2: Formula2 = Formula3

所有公式都使用Ng和Nv,命中求解Ng和Nv变化以满足每个方程,它需要在电子表格上进行22次迭代并进行平均。

我已经在c#中实现了它,如下所示:

 public class FluxSolver
    {
        public FluxSolver(double _na, double _ygo, double _k, double _alpha, double _inletVoidFraction)
        {
            var solver = SolverContext.GetContext();
            solver.ClearModel();

            var model = solver.CreateModel();

            var decisionNG = new Decision(Domain.RealNonnegative, "NG");
            var decisionNV = new Decision(Domain.RealNonnegative, "NV");

            model.AddDecision(decisionNG);
            model.AddDecision(decisionNV);

            Term formula1 = (_ygo * decisionNG) + ((1 - _ygo) * decisionNV);

            model.AddGoal("Goal", GoalKind.Maximize, formula1);

            model.AddConstraint("Constraint1", ((_inletVoidFraction / _k) * (1 / decisionNG)) == (_alpha * ((1 / decisionNV) - 1)));
            model.AddConstraint("Constraint2", ( _ygo * decisionNG) + ((1 - _ygo) * decisionNV) == _na);

            var solution = solver.Solve();

            NV = decisionNV.GetDouble();
            NG = decisionNG.GetDouble();
            Quality = solution.Quality.ToString();

        }

        public double NG { get; set; }
        public double NV { get; set; }
        public string Quality { get; set; }
    }

我已经在这3天了,但仍然没有取得任何进展,解算器只是加载并消失,永远不会超时,不会返回值等等。我的代码中是否存在根本错误?< / p>

任何帮助表示赞赏!

0 个答案:

没有答案