如何在CPLEX中定义这种决策变量

时间:2018-05-03 10:35:02

标签: cplex opl

我是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]是机器k上作业i和作业j的相对处理顺序,但如果我这样说它会引入一些冗余变量,所以我想知道我是否可以编写类似

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

1 个答案:

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