OptaPlanner护士排班

时间:2014-07-21 15:59:49

标签: constraints optaplanner

在为马拉维一家医院的名册发生器工作时发现了OptaPlanner,这将是一个完美的解决方案。所以一些新手问题:

1)我看不到轻松进入假期的方法(除了多天休假请求),可以看到如何添加这个但不想重新发明轮子。

2)我无法找到一种方法来增加约束,让护士每天休息一天,晚班后休息两天(白天和晚上只有两班)任何建议感激不尽,不确定从哪里开始。

非常感谢

1 个答案:

答案 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)