在为马拉维一家医院的名册发生器工作时发现了OptaPlanner,这将是一个完美的解决方案。所以一些新手问题:
1)我看不到轻松进入假期的方法(除了多天休假请求),可以看到如何添加这个但不想重新发明轮子。
2)我无法找到一种方法来增加约束,让护士每天休息一天,晚班后休息两天(白天和晚上只有两班)任何建议感激不尽,不确定从哪里开始。
非常感谢
答案 0 :(得分:0)
这是在the DRL file中添加或编辑得分规则的问题。对于其中一些,您需要扩展the domain model以包含额外信息(例如假期开始/结束等),并调整XML数据集以包含该信息。
1)添加一个HolidayRequest域对象并执行类似这样的操作(警告:伪代码):
rule "holidayRequest"
when
$holidayRequest : HolidayRequest($employee : employee, $startShiftDate : startShiftDate, $endShiftDate : startShiftDate, $weight : weight)
$assignment : ShiftAssignment(employee == $employee, shiftDate >= $startShiftDate, shiftDate <= $endShiftDate)
then
scoreHolder.addSoftConstraintMatch(kcontext, - $weight); // Maybe you want it hard instead of soft?
end
2)我将其改为(非常非常伪代码)
ShiftAssignment(type = DAY, $date)
ShiftAssignment(type = NIGHT, date = $date + 1)
也没有这个
ShiftAssignment(type = NIGHT, $date)
ShiftAssignment(type = DAY, date = $date + 1)
或者这个:
ShiftAssignment(type = NIGHT, $date)
ShiftAssignment(type = DAY, date = $date + 2)