1

我是 CPLEX 的新手,我想知道如何定义决策变量,xijk但仅限于那些带有下标i < ji ≠ j使用 OPL 的变量。

代码就像

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];
4

1 回答 1

1

让我给你举个例子

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;
}
于 2018-05-03T14:37:07.870 回答