如何打印cplex中部分未使用的数组中包含的变量值

时间:2015-02-26 13:05:23

标签: cplex

我想在cplex.solve()之后打印出cplex中的决策变量。然而,变量包含在数组y [i] [j] [k]中,其中并非所有的i,j,k都被使用(即,数组中的某些元素未在模型中使用)。结果,cplex返回一个错误,说明" cplex未知的对象"当试图打印出未使用的元素并因此终止打印时。如何在不触发此类错误的情况下打印出所有已使用的元素?

1 个答案:

答案 0 :(得分:0)

你知道正在使用哪些吗?

你可以这样做:

public List<IloNumVar> getDecisionVars(){
    List<IloNumVar> vars = new ArrayList<>();
    for (int i = 0; i < iLim; i++) {
        for (int j = 0; j < jLim; j++) {
            for(int k = 0; k < kLim; k++) {
                if (isUsed(y[i][j][k]) && model.getValue(y[i][j][k]) == 1) {
                    vars.add(y[i][j][k]);
                }
            }
        }
    }
    return vars;
}    

private boolean isUsed(IloNumVar var){
    //logic to apply if it is used
}

希望这有帮助