我正在尝试使用Solver Foundation创建一个能够解决线性规划问题的应用程序。长话短说我试图将字符串表达式转换为Microsoft.SolverFoundation.Services.Term时遇到困难。
我想要做的是将一个字符串添加为模型的约束,但首先必须将其转换为“Term”。
SolverContext context = SolverContext.GetContext();
Model model = context.CreateModel();
Decision vz = new Decision(Domain.IntegerNonnegative, "barrels_venezuela");
Decision sa = new Decision(Domain.IntegerNonnegative, "barrels_saudiarabia");
Decision se = new Decision(Domain.IntegerNonnegative, "barrels_saudiarabiad");
model.AddDecisions(vz,sa,se);
string theTerm = "(20 * sa) + (15 * vz) + (3 * se)";
Term T = (Term)theTerm;
model.AddConstraint("Name_of_constraint", T);
我试过施法(如上所述)但无济于事。
如何将字符串作为可接受的Term传递给addConstraint函数?
答案 0 :(得分:3)
您需要做的是使用Decision
:s的完整名称而不是变量名称,并让AddConstraint(string, string)
重载进行解析您。像这样:
string theTerm = "(20 * barrels_saudiarabia) +
(15 * barrels_venezuela) + (3 * barrels_saudiarabiad)";
model.AddConstraint("Name_of_constraint", theTerm);
为此,表达式字符串当然必须符合Optimization Modeling Language的规则。