我是CPLEX的新用户,我想知道如何使用OPL定义决策变量,例如xijk
,但只考虑那些带有下标i < j
或i ≠ j
的变量。
代码就像
int jobsNum = ...;
int machinesNum = ...;
range jobs = 0..jobsNum-1
range machines = 0..machinesNum-1;
dvar boolean x[jobs][jobs][machines];
x[jobs][jobs][machines]
是机器k上作业i和作业j的相对处理顺序,但如果我这样说它会引入一些冗余变量,所以我想知道我是否可以编写类似
dvar boolean x[i in jobs][j in jobs: j < i][machines];
答案 0 :(得分:0)
让我举个例子
int jobsNum = 3;
int machinesNum = 4;
range jobs = 0..jobsNum-1;
range machines = 0..machinesNum-1;
tuple t
{
int i;
int j;
}
{t} transitions={<i,j> | ordered i,j in jobs};
dvar boolean x[transitions][machines];
subject to
{
x[<1,2>][1]==1;
}