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