大家好!
在解决模型后,我遇到了获取变量x值的问题。
x变量是四个索引变量。
我定义了结构:
#define ILOARRAYNUM2 IloArray<IloNumArray>
#define ILOARRAYNUM3 IloArray<ILOARRAYNUM2 >
#define ILOARRAYNUM4 IloArray<ILOARRAYNUM3 >
typedef IloArray<IloNumVarArray> NumVar2Array;
typedef IloArray<NumVar2Array> NumVar3Array;
typedef IloArray<NumVar3Array> NumVar4Array;
变量x定义为:
NumVar4Array x;
ILOARRAYNUM4 _x;
mono.x = NumVar4Array(env, n);
for(int i = 0; i < n; i++) {
mono.x[i] = NumVar3Array(env, n);
for(int j = 0; j < n; j++) {
mono.x[i][j] = NumVar2Array(env, n);
for (int k = 0; k < n; k++) {
mono.x[i][j][k] = IloNumVarArray(env, n, 0.0, 1.0, ILOFLOAT);
}
}
}
mono._x = ILOARRAYNUM4(env,n);
for (int i = 0; i < n; i++){
mono._x[i] = ILOARRAYNUM3(env,n);
for (int j = 0; j < n; j++){
mono._x[i][j] = ILOARRAYNUM2(env,n);
for (int k = 0; k < n; k++) {
mono._x[i][j][k] = IloNumArray(env,n);
}
}
}
要获取x的值,我会这样做:
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (w[i][j] != 0){
for (int k = 0; k < n; k++) {
for (int m = 0; m < n; m++) {
if ( (k != m && k != j && m != i) or (k == m) ) {
mono.cplex.getValue(mono.x[i][j][k][m], mono._x[i][j][k][m]);
}
}
}
}
}
}
但是,然后会出现以下错误消息:
引用的IloExtractable尚未被IloAlgorithm
提取我做错了什么?
答案 0 :(得分:1)
您的问题中的约束很可能不包括所有变量;可能存在一些不涉及任何约束的变量。您的代码是否获得某些变量的值?您是否尝试通过此代码进行调试以查看哪些变量未提取到CPLEX?