请考虑以下事项:
var Constraints = new NonlinearConstraint[2*nVars];
var Constraints = new[] {
new NonlinearConstraint(nVars, x => x[0] >= 0),
new NonlinearConstraint(nVars, x => x[0] <= 1),
new NonlinearConstraint(nVars, x => x[1] >= 0),
new NonlinearConstraint(nVars, x => x[1] <= 1),
};
// et cetera for all x[i]
我想找到一种方法来为所有x[i]
使用for循环构造这个变量;
我无法找到任何适当的文件。我尝试过使用
System.Linq.Expressions.Expression.Lambda<>();
但是我遇到了转换错误代码
非常感谢任何想法或帮助。
答案 0 :(得分:-1)
你在找这样的东西吗?
Enumerable.Range(0, nVars)
.SelectMany(i => new[]
{
new NonlinearConstraint(nVars, x => x[i] >= 0),
new NonlinearConstraint(nVars, x => x[i] <= 1),
})
.ToArray();
这会创建一个NonlinearConstraint
s数组,从i
到0
每个nVars-1
创建两个...
也就是说,您不是迭代地创建 lambda ,而是约束对象数组。每个人都有自己的lambda,当然......