如何在 CPLEX 中定义此类决策变量
How to define this kind of decision variables in CPLEX
我是 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]
是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;
}
我是 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]
是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;
}