如何在 CPLEX 中定义此类决策变量

How to define this kind of decision variables in CPLEX

我是 CPLEX 的新手,我想知道如何使用 OPL 定义像 xijk 这样的决策变量,但只能定义带有下标 i < ji ≠ 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]是job i和job j在机器k上的相对处理顺序,但是这样写会引入一些多余的变量,所以我想能不能写成类似

dvar boolean x[i in jobs][j in jobs: j < i][machines];

举个例子

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;
}