我正在 CPLEX OPL 中实现两阶段方法。
我想创建一个集合,其中包含在我的初始阶段获得的变量的单一值。为了初始化我的第二阶段,我创建了一个 getValue(X) 来恢复在 i,j,k 中索引的布尔变量的最佳值。后来,在索引“j”和“k”的双循环中,我尝试沿 i 维声明“X”的单一值的集合“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};
但我总是得到错误:“非法使用保留关键字”。我知道我的集合声明不好,但不知道如何声明它以使我的集合 S 包含 X[i][j][k] == 1 的 I 的值。
你能提供一些帮助吗?此致