如何确定轮班中女性员工的数量
How to fix number of females employees in a shift
我正在为员工班次添加自定义规则,其中我有 4 种班次,在一种班次中,女性员工的数量必须固定
我试过在 shift class 中添加一个字段,即 requiredFemalesEmployees,它被设置为 1
//硬约束
规则 "OneFemaleInShiftA"
when
$gender:Employee(gender=="F")
$rfe:Shift(requiredFemalesEmployees==1)
accumulate(
$a:ShiftAssignment(employee==$gender,$shift:shift.requiredFemalesEmployees),
$total :count($a)
)
then
if($total.intValue()!=1){
scoreHolder.addHardConstraintMatch(kcontext, - 1);
}
结束
任何建议都会有很大帮助。
首先,您创建了一个名为 $rfe 的变量,但未被使用,在这一行中:
$a:ShiftAssignment(employee==$gender,$shift:shift.requiredFemalesEmployees), 你给 $shift 分配了什么?
这是我的例子:
rule "oneFemaleInShift"
when
$gender:Employee(gender=="F")
$rfe:Shift(requiredFemalesEmployees==1)
Number(intValue!=1) from accumulate(
$a:ShiftAssignment(employee==$gender, ¿¿$shift:shift.requiredFemalesEmployees??),
count($a)
)
then
scoreHolder.addHardConstraintMatch(kcontext, - 1);
我们需要领域模型或 java POJO 的来源来了解它们之间的关系。
我认为这会对你有所帮助:
rule "oneFemaleInShift"
when
$femaleEmployee:Employee(gender=="F") //GET FEMALE POJOS
$rfe:Shift(requiredFemalesEmployees==1) // GET SHIFT WHERE FEMALE IS REQUIRED
Number(intValue > 0) from accumulate( //COUNT NUMBER OF FEMALE EMPLOYEES IN THAT SHIFT, PENALIZE SOLUTION WHERE THERE ARE LESS THAN 1
$a:ShiftAssignment(employee==$femaleEmployee, shift==$rfe),
count($a)
)
then
scoreHolder.addHardConstraintMatch(kcontext, - 1); // LOOK AT THE VALUE OF HARD SCORE, PROPORTION WITH OTHER HARD CONSTRAINT
我正在为员工班次添加自定义规则,其中我有 4 种班次,在一种班次中,女性员工的数量必须固定
我试过在 shift class 中添加一个字段,即 requiredFemalesEmployees,它被设置为 1 //硬约束 规则 "OneFemaleInShiftA"
when
$gender:Employee(gender=="F")
$rfe:Shift(requiredFemalesEmployees==1)
accumulate(
$a:ShiftAssignment(employee==$gender,$shift:shift.requiredFemalesEmployees),
$total :count($a)
)
then
if($total.intValue()!=1){
scoreHolder.addHardConstraintMatch(kcontext, - 1);
}
结束
任何建议都会有很大帮助。
首先,您创建了一个名为 $rfe 的变量,但未被使用,在这一行中: $a:ShiftAssignment(employee==$gender,$shift:shift.requiredFemalesEmployees), 你给 $shift 分配了什么?
这是我的例子:
rule "oneFemaleInShift"
when
$gender:Employee(gender=="F")
$rfe:Shift(requiredFemalesEmployees==1)
Number(intValue!=1) from accumulate(
$a:ShiftAssignment(employee==$gender, ¿¿$shift:shift.requiredFemalesEmployees??),
count($a)
)
then
scoreHolder.addHardConstraintMatch(kcontext, - 1);
我们需要领域模型或 java POJO 的来源来了解它们之间的关系。
我认为这会对你有所帮助:
rule "oneFemaleInShift"
when
$femaleEmployee:Employee(gender=="F") //GET FEMALE POJOS
$rfe:Shift(requiredFemalesEmployees==1) // GET SHIFT WHERE FEMALE IS REQUIRED
Number(intValue > 0) from accumulate( //COUNT NUMBER OF FEMALE EMPLOYEES IN THAT SHIFT, PENALIZE SOLUTION WHERE THERE ARE LESS THAN 1
$a:ShiftAssignment(employee==$femaleEmployee, shift==$rfe),
count($a)
)
then
scoreHolder.addHardConstraintMatch(kcontext, - 1); // LOOK AT THE VALUE OF HARD SCORE, PROPORTION WITH OTHER HARD CONSTRAINT