当前,我正在尝试在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,并且该错误将不再发生。

10-06 01:45