首页 > 解决方案 > 在 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 的值..

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

提前谢谢了!

标签: javalinear-programmingcplex

解决方案


CPLEX 错误:IloCplex 未知对象

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

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

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

有了这个,您应该能够查询所有的IloNumVar'sy并且应该不再发生错误。


推荐阅读