Choco求解器移位调度

时间:2016-08-09 12:54:40

标签: constraints shift choco

我是Choco Solver的初学者。我想制作一个简单的移位调度程序。 我已经设置了像这样的整数变量

IntVar day1 = model.intVar("day1", new int[] {0,1,2,3,4,5});  

其中0,1,... 5是员工的参考ID。

我总共有30个变量(一个月中每天一个),因为这是一个基于每月的班次时间表。 我已设置约束,但不允许例如不要连续两天轮班。

我的问题是, 我如何设置约束,使每个雇主至少有5个班次,即。域中的每个值在所有30个变量中至少出现5次?

谢谢!

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。看一下model.globalCardinality和model.count,这些约束可以计算一组变量使用值的次数。

http://choco-solver.org/apidocs/org/chocosolver/solver/constraints/IConstraintFactory.html

例如,model.count(3,vars,model.intVar(5,10))。post();意味着变量中的5到10个变量应该等于3,因此员工3应该在5到10个变量之间进行。