当前,我正在尝试在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);
这样,您应该能够查询
IloNumVar
中的所有y
,并且该错误将不再发生。