I would have all of the object be of the same type or implement the same interface (A), then set some calculated facts in a rule that I would use in a subsequent rule to get the final calculation.

 

This first rule fires for every instance of the type or interface

If

A.weight > 0

Then

Set fact calculated_weight = calculated_weight + A.weight

Set fact calculated_certaintity = calculated_certaintity + A.certaintity * A.weight

 

 

 

If

True

Then

Set fact final_answer = calculated_certaintity / calculated_weight.

 

 

 

Something like that.  Hope it helps

 

Barry

 

 

From: rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org] On Behalf Of thomas kukofka
Sent: Friday, August 29, 2008 10:08 AM
To: Rules Users List
Subject: [rules-users] rule algorithm

 

Hello,

I search a rule implementation for the following calculation:
I have n Objects of differents types (A, B, C, ...) each with a parameter certainty.

the overall certainty is calculated as follows: certaintyOverall = (certaintyA * weightA + certaintyB * weightB + ... ) / (weightA  + weightB + ...)

If it can be assumed that all Objects in the formula always exist it's quite easy:
when
  A (certaintyA: certainty)
  B (certaintyB: certainty)
  ...
then
  certaintyOverall = (certaintyA * weightA + certaintyB * weightB + ... ) / (weightA  + weightB + ...)

But if one ore more objects are missing the formula should be reduced to the certainty and weights of the existing objects. But there are too many combinations of existing/nonexisting objects. How can this be implemented in Drools?

Regards
Thomas