S [i] [j] [k]是机器[k]上操作O [i] [j]的开始时间。
C [i] [j] [k]在机器[k]上的操作O [i] [j]完成时间。
v [i] [j] [k]等于1,如果操作O [i] [j]在机器[k]上执行,则为0。
我想添加S [i] [j] [k] + C [i] [j] [k] <= v [i] [j] [k] * Big-M的约束,其中k属于MC [i] [j]
MC [i] [j]是可以处理操作O [i] [j]的候选机器集。
任何人都可以提出这个问题吗?
[我不是CPLEX的新手,而且我不知道如何添加这样的约束(因为k有一些约束,即k应该属于MC [i] [j])
在OPL中,您几乎可以像自然语言一样编写这种约束:
float bigM = ...; // Put some value for bigM
forall (i in I)
forall (j in J)
forall (k in MC[i][j])
S[i][j][k] + S[i][j][k] <= v[i][j][k] * bigM;
注意,您的描述中似乎存在问题:S [i] [j] [k]同时指定了作业的开始[[和完成时间。那很可能不是您想要的。