[rules-users] Hard constraints to enforce employee seniority

Patrik Dufresne ikus060 at gmail.com
Wed Dec 7 15:41:43 EST 2011


Hi all,

I'm trying to create rules to model my problem. So far, I didn't manage to
create rules to make Drools converge to a solution because of score traps.
I don't see any way to avoid it (as I'm not an expert with Drools). I can
express the rule as follow : a senior employee should work before a less
senior employee.

I've implement it as a hard constraint :
rule "hard-Seniority"
when
$employee : Employee()
 $assignment : PlanifEventAssignment( $planifEmployee : employee )
not PlanifEventAssignment( employee == $employee )
 eval(Helper.compareEmployee($employee, $planifEmployee) < 0)
then
insertLogical(new IntConstraintOccurrence("hard-Seniority",
        ConstraintType.NEGATIVE_HARD,
         1,
         $employee, $assignment));
end

The function Helper.compareEmployee(e1, e2) return -1 if e1 is more senior
then e2 (mostly based on hire date and other boolean fields).

This way, the rule make sure a senior employee is working. But it's a score
trap since, many moves are required to resolve the constraint. e.g:

PlanifEventAssignment1 = e2
PlanifEventAssignment2 = e3
PlanifEventAssignment3 = e4
PlanifEventAssignment4 = e5

e1 is not working. Multiple move are require to reach the best solution :
PlanifEventAssignment1 = e1
PlanifEventAssignment2 = e2
PlanifEventAssignment3 = e3
PlanifEventAssignment4 = e4

So I'm asking you. What is the best way to make Drools converge ? Do I need
to change my rule, or should I create a BigMove ?

-- 
Patrik Dufresne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20111207/6a9e88f4/attachment.html 


More information about the rules-users mailing list