我正在编写一个模型,以最大限度地降低总体成本,但当我想注销天数限制时,我遇到了一个问题,限制如附图所示。我的问题是如何在Cplex中编写这些约束?
休息日限制*单击超链接打开约束图片。
w: 代表工人s: 代表轮班d: 代表天数
提前谢谢。
您可以使用逻辑约束:
int n=10;
range Days=1..n;
dvar boolean X[Days];
dvar boolean O[Days];
subject to
{
forall(d in Days:d+1<=n) (O[d]==1)=>(0==sum(i in d..d+1) X[i]);
forall(d in Days:d+6<=n) (O[d]==1)=>(0==sum(i in d+1..d+6) X[i]);
}