我是Choco Solver的初学者。我想制作一个简单的移位调度程序。 我已经设置了像这样的整数变量
IntVar day1 = model.intVar("day1", new int[] {0,1,2,3,4,5});
其中0,1,... 5是员工的参考ID。
我总共有30个变量(一个月中每天一个),因为这是一个基于每月的班次时间表。 我已设置约束,但不允许例如不要连续两天轮班。
我的问题是, 我如何设置约束,使每个雇主至少有5个班次,即。域中的每个值在所有30个变量中至少出现5次?
谢谢!
答案 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个变量之间进行。