我在CPLEX OPL中实现了两阶段方法。设置声明中的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的值。
您能否提供一些帮助? 最好的问候
感谢您的帮助@AlexFleischer!我是CPLEX OPL的新手,你能帮我理解代码吗?首先初始化范围I,J和K(为什么只有两个元素?我多一点,比如nI,nJ和nK)。稍后,将X定义为一个二进制数,每当i = j = k = 1时取一个整数值,否则为零。对?但是X值是作为第一阶段模型的最优值给予我的。我怎么能将你的主张扩展到每维度的nI,nJ和nK元素? – Jacko