用cplex输出一个二元变量数组。

问题描述 投票:0回答:1

目前我想在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 Error: object is unknown to IloCplex"(CPLEX错误:对象对IloCplex未知)。

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

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

非常感谢

java linear-programming cplex
1个回答
0
投票

CPLEX错误:对象对IloCplex来说是未知的。

这个错误通常会在您没有向模型添加对象时出现(即,该特定的 IloNumVar 没有出现在任何约束或目标中)。) 您可能想把您的模型导出为LP格式,并使用 出口模型 方法来检查它是否正确地制定了(即,如您所期望的)。

一个可能的变通方法是,在您调用 solve(). 例如::

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

这样,你就可以查询所有的... IloNumVar的在 y 而该错误应该不再发生。

© www.soinside.com 2019 - 2024. All rights reserved.