[rules-users] Multiplying the count of each score rule

Patrik Dufresne ikus060 at gmail.com
Wed Dec 14 12:40:36 EST 2011


Hi,

I'm still in process to model my planning problem and I have some
difficulties in defining the correct weight of soft constraints. I have
soft constraints with different priorities : C1, C2, C3, ..., Cn where C1
are higher then C2. Currently, I've tried to set different weight for each
of them : C1 get higher weight. But it's not sufficient since multiple C2
may balance one C1. What I really need is to set the priority to every soft
constraints.

Solution #1 :
My first thought it to implement a new score definition
(HardAndSoftPriorityScoreDefinition) having separate soft score for each
priority. The rule may insert ConstraintOccurence by defining the weight
and the priority. This solution seems elegant but require effort to
implement the score definition, the score calculation, and other things I
don't even know about.

Solution #2 :
The other solution is stated in the Drools Planner User Guide :

"Most use cases will also weigh their constraints differently, by
multiplying the count of each score rule with its weight. For example in
freight routing, you can make 5 broken "avoid crossroads" soft constraints
count as much as 1 broken "avoid highways at rush hour" soft constraint.
This allows your business analysts to easily tweak the score function as
they see fit."

Even tough I don't know how to implement this, it's seems much easier to
achieve since it's only a rule. Compare to solution #1, it's lack the
support of soft constraints with same priority but different weights.

What is your opinion about both solution.

Is one faster then the other ?

Is it hard to create a new score definition ?

Did anyone ever did this ?

-- 
Patrik Dufresne
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20111214/7c72551d/attachment.html 


More information about the rules-users mailing list