0
通常在Gurobi的Java接口I通过增加变量模型与此例如创建模型:使用决策变量Gurobi的Java
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++) {
XobjectiveCoef = distance(i, j);
X[i][j] = model.addVar(0.0, 1.0, XobjectiveCoef, GRB.BINARY, "x" + String.valueOf(i) + "_" + String.valueOf(j));
}
}
当我做我有我的模型,该模型的总和以上的所有X i和j,我可以在任何约束使用X[i][j]
我想是这样的:
for (int j = 0; j < n; j++) {
GRBLinExpr expr = new GRBLinExpr();
for (int i = 0; i < n; i++){
expr.addTerm(1.0, X[i][j]);
}
model.addConstr(expr, GRB.EQUAL, 1.0, "Name_of_constraint");
}
现在我找的,是使用决策变量只有在一个约束,并非上策在模型定义中。我检查了是否addVar
可用于GRBLinExpr
但它不是。
感谢
感谢您的回答。我知道我可以重用expr,但我不确定我能否得到答案。在哪里以及如何创建Y和Z(如果它们不在模型定义中)(因此不是使用model.addVar(...)创建的)? –
Y和Z是新变量;该示例仅表明您可以重用名为expr的GRBLinExpr。 –
谢谢你的例子。但是从主要问题和评论中可以看出,问题不在于重复使用表达式,问题在于创建决策变量而不将其添加到目标函数中。构造函数new GRBVar不可用,您必须通过model.addVar(...)。但是如果我调用model.addVar(...),它会将这个变量添加到目标函数中。我对么? –