【发布时间】:2015-01-05 17:38:16
【问题描述】:
我正在研究 Optaplanner,并且正在使用 Nursing Roster 做一些实验。
对于这个实验,我的目标很简单:让护士“1”更受欢迎,也更有可能在周末工作。
我编写了以下规则来帮助实现这一点:
rule "nurseNamed1WorksWeekends"
when
$oneNurse: Employee( name = "1")
$wk : ShiftAssignment( isWeekend = true)
then
scoreHolder.addSoftConstraintMatch(kcontext, 1);
end
rule "nurseNamed1MustNotWorkWeekdays"
when
$oneNurse: Employee( name = "1")
not $wk : ShiftAssignment( isWeekend = false)
then
scoreHolder.addSoftConstraintMatch(kcontext, 1);
end
但是,在运行示例一段时间后,护士“1”仍然没有周末工作。
我做错了什么?
谢谢
根据 laune 的建议修改规则,但 optaplanner 仍然不愿意让护士周末轮班:
rule "nurseNamed1WorksWeekends"
when
$oneNurse: Employee( name == "1", )
$wk : ShiftAssignment( isWeekend == true, employee == $oneNurse)
then
scoreHolder.addSoftConstraintMatch(kcontext, 1);
end
rule "nurseNamed1MustNotWorkWeekdays"
when
$oneNurse: Employee( name == "1")
not ShiftAssignment( isWeekend = false, employee == $oneNurse)
then
scoreHolder.addSoftConstraintMatch(kcontext, 1);
end
【问题讨论】:
标签: drools optaplanner