我正在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};
但我总是得到错误:“非法使用保留关键字”。我知道我的set声明不好但不知道如何声明它以使我的集合S包含I的值,其中X [i] [j] [k] == 1.
你能提供一些帮助吗? 最好的问候答案 0 :(得分:0)
范围I = 1..2; 范围J = 1..2; 范围K = 1..2; int X [i in I] [j in J] [k in K] =(i == 1)&amp;&amp;(j == 1)&amp;&amp;(k == 1)?1:0; < / p>
int v [i in I] = 1&lt; = sum(j in J,k in K)(X [i] [j] [k] == 1); {int} S = {i |我在I:v [i] == 1};
执行 { writeln(S); }
可以提供帮助
问候