我需要将使用求解器插件的 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 天了,但仍然没有取得任何进展,求解器只是加载然后消失,从不超时,不返回值等。我的代码中有什么根本错误吗?
任何帮助表示赞赏!