gpt4 book ai didi

java - Drools 硬约束实现

转载 作者:行者123 更新时间:2023-12-01 17:45:02 24 4
gpt4 key购买 nike

尝试使用 Optaplanner 创建用于员工(护士)排类的 Java Web 应用程序。我想做出这样的硬约束:

//护士只能上夜类,即连续两类可以是N-X或N-N规则“nightOrOffAfterNightShift”
什么时候
移位赋值(
$employee:员工,员工!= null,
$shiftDate : 类次日期,
$lastShift :移位,
$shiftType : 移位类型
)
移位赋值(
雇员==$雇员,
shiftDate.isAfter($shiftDate) == true
)
然后
if(shiftType != $shiftType && shift != null)
ScoreHolder.addHardConstraintMatch(kcontext, -1);
结尾
我没有 Drools 经验,这有效吗?

最佳答案

第一关 - 我不是规则专家(最近正在学习其中的一些内容)

不认为你需要 $lastShift :shift,您将使用规则将 2 个 ShiftAssignment 链接在一起

我认为你应该使用顺序 ID 来检查连续类次目前我认为您的规则将在 $shiftDate 之后触发所有类次我认为你不想这样做

我认为您的 THEN 部分不需要 if 子句这应该是您在“何时”部分进行条件检查的一部分所以 then 部分应该包含 将新知识插入规则工作内存中 修改/删除规则工作内存中当前的事实 打印语句——如果你需要它们(实际上不推荐——使用changeListeners)

if(shiftType != $shiftType && shift != null)不清楚您认为 shiftType 来自 2 个 ShiftAssignment 对象中的哪一个

规则“nightOrOffAfterNightShift” 什么时候 sAn : ShiftAssignment( $idn : ID $employee_n:员工, $employee_n!=空, $shift:移位, $shift!= null, $sTn :换档类型 ) sAn_1 : ShiftAssignment( $idn_1:ID $idn == $idn_1 + 1, $employee_n_1:员工, $employee_n_1!= null, $employee_n_1 == $employee_n, $sTn_1 :换档类型, $sT != $sTn_1 ) 然后 ????现在你需要在这里做什么结束

你能分享一下你的 ShiftAssignment 类吗

我认为以上发现 移动 idn 和 idn_1 其中 同一个员工 具有不同的shiftType

希望这接近您想要的

关于java - Drools 硬约束实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60877281/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com