1

Solver プラグインを使用する Excel スプレッドシートを ASP.NET c# サイトに移植する必要があります。Solver Foundation 3.1 を使用していますが、役に立ちません。

方程式は反復的であり、2 つの決定値を決定するには 2 つの条件が満たされる必要があります。

スプレッドシートの 2 つの決定値は 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 日間それを行ってきましたが、まだ進歩がありません。ソルバーはロードされて消え、タイムアウトすることはなく、値を返さないなどです。コードに根本的な問題はありますか?

どんな助けでも大歓迎です!

4

0 に答える 0