集合声明中的 CPLEX OPL 错误
CPLEX OPL error in set declaration
我正在 CPLEX OPL 中实现两阶段方法。
我想创建一个集合,其中包含在初始阶段获得的变量的单一值。为了初始化我的第二阶段,我创建了一个 getValue(X) 来恢复在 i、j、k 中索引的布尔变量的最佳值。后来,在索引 "j" 和 "k" 的双循环中,我尝试声明 "X" 沿 i 维的单一值的集合 "S"。
但是,我没有做出正确的集合声明...我已经尝试使用:
var S = {i | i in I : X[i][j][k] == 1};
int S = {i | i in I : X[i][j][k] == 1};
{int} S = {i | i in I : X[i][j][k] == 1};
但我总是得到错误:"Illegal use of a reserved keyword"。我知道我的集合声明不好但不知道如何声明它以使我的集合 S 包含 X[i][j][k] == 1.[=11 的 I 值=]
能否请您提供一些帮助?
最好的问候
range I=1..2;
range J=1..2;
range K=1..2;
int X[i in I][j in J][k in K]=(i==1)&&(j==1)&&(k==1)?1:0;
int v[i in I]=1<=sum(j in J,k in K )(X[i][j][k] == 1);
{int} S = {i | i in I : v[i] == 1};
execute
{
writeln(S);
}
有帮助
问候
我正在 CPLEX OPL 中实现两阶段方法。
我想创建一个集合,其中包含在初始阶段获得的变量的单一值。为了初始化我的第二阶段,我创建了一个 getValue(X) 来恢复在 i、j、k 中索引的布尔变量的最佳值。后来,在索引 "j" 和 "k" 的双循环中,我尝试声明 "X" 沿 i 维的单一值的集合 "S"。
但是,我没有做出正确的集合声明...我已经尝试使用:
var S = {i | i in I : X[i][j][k] == 1};
int S = {i | i in I : X[i][j][k] == 1};
{int} S = {i | i in I : X[i][j][k] == 1};
但我总是得到错误:"Illegal use of a reserved keyword"。我知道我的集合声明不好但不知道如何声明它以使我的集合 S 包含 X[i][j][k] == 1.[=11 的 I 值=]
能否请您提供一些帮助? 最好的问候
range I=1..2; range J=1..2; range K=1..2; int X[i in I][j in J][k in K]=(i==1)&&(j==1)&&(k==1)?1:0;
int v[i in I]=1<=sum(j in J,k in K )(X[i][j][k] == 1); {int} S = {i | i in I : v[i] == 1};
execute { writeln(S); }
有帮助
问候