下面的objective函数在Gurobi中怎么写?
How to write the following objective function in Gurobi?
下面是objective函数:
我有以下 Java 代码:
// Create list of variables
List<GRBVar> varList = new ArrayList<>();
// Set objective: maximize log(p) * x
GRBLinExpr expr = new GRBLinExpr();
int counter = 0;
for(Map.Entry<String, Double[]> entry: probabilityLevels.entrySet()) {
Double[] probs = entry.getValue();
for (Double prob: probs) {
GRBVar x = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "x" + counter);
expr.addTerm(Math.log(prob), x);
varList.add(x);
}
}
model.setObjective(expr, GRB.MAXIMIZE);
更新代码
您的循环看起来是正确的,但您只创建了一个 GRBVar x,而不是为 j、k 和 z 的每个组合创建一个 GRBVar。您应该创建一些数据结构来存储所有这些 GRBVar 对象,并在迭代 j、k 和 z 的组合时创建它们。
下面是objective函数:
我有以下 Java 代码:
// Create list of variables
List<GRBVar> varList = new ArrayList<>();
// Set objective: maximize log(p) * x
GRBLinExpr expr = new GRBLinExpr();
int counter = 0;
for(Map.Entry<String, Double[]> entry: probabilityLevels.entrySet()) {
Double[] probs = entry.getValue();
for (Double prob: probs) {
GRBVar x = model.addVar(0.0, 1.0, 0.0, GRB.BINARY, "x" + counter);
expr.addTerm(Math.log(prob), x);
varList.add(x);
}
}
model.setObjective(expr, GRB.MAXIMIZE);
更新代码
您的循环看起来是正确的,但您只创建了一个 GRBVar x,而不是为 j、k 和 z 的每个组合创建一个 GRBVar。您应该创建一些数据结构来存储所有这些 GRBVar 对象,并在迭代 j、k 和 z 的组合时创建它们。