Как написать следующую целевую функцию в Gurobi?

Следующее является целевой функцией:

У меня есть следующий код 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 ответ

Решение

Ваши циклы выглядят правильно, но вы создаете только один GRBVar x вместо одного GRBVar для каждой комбинации j, k и z. Вы должны создать некоторую структуру данных для хранения всех этих объектов GRBVar и создавать их, когда вы повторяете комбинации j, k и z.

Другие вопросы по тегам