如何在Gurobi中编写以下目标函数?

时间:2017-03-29 09:09:42

标签: java model gurobi mixed-integer-programming

以下是目标函数:

enter image description here

我有以下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);

更新代码

1 个答案:

答案 0 :(得分:1)

您的循环看起来正确,但您只创建一个GRBVar x,而不是为j,k和z的每个组合创建一个GRBVar。您应该创建一些数据结构来存储所有这些GRBVar对象,并在迭代j,k和z的组合时创建它们。