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(...),它會將這個變量添加到目標函數中。我對麼? –