在cplex中输出一个二维变量数组



当前我正试图在CPLEX中输出一个二维变量数组。数组的定义方式如下:

IloNumVar[][] y = new IloNumVar[numJobs][]; 
for(int j=0; j<numJobs; j++){
y[j]= cplex.numVarArray(numJobs,0, 1, IloNumVarType.Int);//ILP
}

求解ILP后,应打印这些变量。我试着用以下方式打印它们:

for (int i = 0; i < numJobs; i++) {
for(int j=0; j < y[i].length; j++){
System.out.println(cplex.getValues(y[i][j])+ ", ");
}
}

作为一个错误,我收到"CPLEX错误:对象对IloCplex未知">

如果我设置j=1,则只打印I=0的值。。

有人知道如何解决这个问题吗?

非常感谢!

CPLEX错误:对象对IloCplex 未知

当您没有向模型添加对象时(即,特定的IloNumVar既没有出现在任何约束中,也没有出现在目标中(,通常会出现此错误。您可能希望使用exportModel方法将模型导出为LP格式,以检查其是否正确制定(即,正如您所期望的那样(。

一个可能的解决方法是在调用solve()之前将所有变量显式添加到模型中。例如:

for (IloNumVar[] v : y)
cplex.add(v);

这样,您就可以查询y中的所有IloNumVar,并且错误就不会再发生了。

最新更新