[rules-users] Rule problem

Wolfgang Laun wolfgang.laun at gmail.com
Mon May 4 15:48:53 EDT 2009


Don't use doubles. Try the same thing, scaling the random weights with 10
(or 100) convert to int, and use suitably scaled integer limits for your
weight classes.

I'm not at all sure, what various JVM versions and/or Rand generators could
produce.

The javadoc for java.lang.Math is an indicator that things might not be as
simple as they ought to be.

I could reproduce the problem this afternoon, but now I can't any more, on
the same machine, same JVM and same Drools version.

-W


2009/5/4 Femke De Backere <femmyke at gmail.com>

> So, I did as you suggested, with the following as result:BMI of 10 U heeft
> ondergewicht: 10
> BMI of 30 U heeft ondergewicht: 30
> BMI of 30 U heeft obesitas: 30
> BMI of 20 U heeft ondergewicht: 20
>
> So, I really don't get it, I used exactly the same code as you.
>
> Femke
>
> Op 4-mei-09, om 17:11 heeft Greg Barton het volgende geschreven:
>
>
> Well, approach this systematically, then: Create a new Drools project in
> Eclipse and replace the DroolsTest.java and Sample.drl with the ones I sent
> before.  What results do you get?  If they are correct, modify the project
> one step at a time until the problem is uncovered.
>
> One place to focus on: you're using rule flows.  I have no idea how that
> could cause a false positive result like you've seen, but you never know.
>
> Finally, if you're comparing performance of rules vs plain java, plain java
> will easily win in this case.  The rule of thumb is this: if you can easily
> write a plain non-rules algorithm it will outperform the rules solution.
>
> --- On Mon, 5/4/09, Femke De Backere <femmyke at gmail.com> wrote:
>
> From: Femke De Backere <femmyke at gmail.com>
>
> Subject: Re: [rules-users] Rule problem
>
> To: "Rules Users List" <rules-users at lists.jboss.org>
>
> Date: Monday, May 4, 2009, 6:53 AM
>
> I'm using this:
>
> package bmi
>
>
> import bmi.DroolsTest.BMIClass;
>
>
> rule "Overgewicht"
>
> ruleflow-group "BMIrules"
>
> when
>
>  bmiClass : BMIClass($bmi: bmi >= 25, bmi < 30)
>
> then
>
>  System.out.println("U heeft overgewicht: " +
>
> $bmi);
>
> end
>
>
> rule "Obesitas"
>
> ruleflow-group "BMIrules"
>
> when
>
>  bmiClass : BMIClass($bmi : bmi >= 30)
>
> then
>
>  System.out.println("U heeft obesitas: " +
>
> $bmi);
>
> end
>
>
>
> rule "Ondergewicht"
>
> ruleflow-group "BMIrules"
>
> when
>
>  bmiClass : BMIClass($bmi : bmi < 18.5)
>
> then
>
>  System.out.println("U heeft ondergewicht: " +
>
> $bmi);
>
> end
>
>
>
> rule "Normaal"
>
> ruleflow-group "BMIrules"
>
> when
>
>  bmiClass : BMIClass($bmi : bmi >= 18.5, bmi < 25)
>
> then
>
>  System.out.println("U heeft een normaal gewicht:
>
> " + $bmi);
>
> end
>
>
> But in essence it is the same as Greg's. I get outputs
>
> as:
>
>
> U heeft ondergewicht: 25.0
>
> U heeft overgewicht: 25.0
>
>
> But I really don't see the problem.
>
>
> Femke
>
>
> Op 4-mei-09, om 13:25 heeft Wolfgang Laun het volgende
>
> geschreven:
>
>
> I cannot reproduce your findings.
>
> Which bmi values cause the firing of two rules?
>
> Are you using exactly the same .drl file Greg sent?
>
> -W
>
>
> 2009/5/4 Femke De Backere <femmyke at gmail.com>
>
> Thanks for the answer! But I sometimes get 2 rules
>
> that are correct,
>
> and that is impossible. I embedded Greg's
>
> DroolsTest class in my
>
> class (I am doing some test on performance and
>
> studying the
>
> difference between performance with a plain java
>
> class), and it
>
> still doesn't work, and I really don't see
>
> why. Anyone any
>
> suggestions, in attachement, my class.
>
>
> Thx,
>
>
> Femke
>
>
>
>
>
> Op 4-mei-09, om 02:47 heeft Greg Barton het volgende
>
> geschreven:
>
>
> Try the attached code.
>
>
> --- On Sun, 5/3/09, Femke De Backere
>
> <femmyke at gmail.com> wrote:
>
>
> From: Femke De Backere <femmyke at gmail.com>
>
> Subject: Re: [rules-users] Rule problem
>
> To: "Rules Users List"
>
> <rules-users at lists.jboss.org>
>
> Date: Sunday, May 3, 2009, 6:18 PM
>
> Thx for the answer. I tried this but I doesn't
>
> seem to
>
> work. For a BMI of 20, i get the result
>
> "ondergewicht", and it should be
>
> "normal".
>
>
> Op 4-mei-09, om 01:04 heeft Ingomar Otter het volgende
>
> geschreven:
>
>
> Femke,
>
> The "Overgewicht| rule matches for _two_ BMIClass
>
> facts, one with bmi >- 25 and one for BMIClass
>
> <30.
>
> If you want to apply multiple  constraints to a single
>
> fact you have to list them as such:
>
>
> rule "Overgewicht"
>
>       when
>
>               bmiClass : BMIClass(bmi >= 25
>
> && bmi
>
> <30)
>
>       then
>
>               System.out.println("U heeft
>
> overgewicht");
>
> end
>
>
>
> Cheers,
>
> Ingomar
>
>
>
> Am 04.05.2009 um 00:48 schrieb Femke De Backere:
>
>
> Hi!
>
>
> I want to make en BMI rule application, so I need
>
> to test the BMI values. But in rule
>
> "Overgewicht"
>
> and "Normaal", I need to use an AND, but it
>
> doesn't seem to work in any way I tried.
>
>
> Does anybody see the problem? The rest of the
>
> application is based on de sample project (created
>
> when
>
> making a new Drools project).
>
>
> Thx,
>
>
> Femke
>
>
> package bmi
>
>
> import bmi.DroolsTest.BMIClass;
>
>
> rule "Overgewicht"
>
>       when
>
>               bmiClass : BMIClass(bmi >= 25)
>
>               bmiClass : BMIClass(bmi < 30)
>
>       then
>
>               System.out.println("U heeft
>
> overgewicht");
>
> end
>
>
> rule "Obesitas"
>
>       when
>
>               bmiClass : BMIClass($bmi : bmi >=
>
> 30)
>
>       then
>
>               System.out.println("U heeft
>
> obesitas");
>
> end
>
>
> rule "Ondergewicht"
>
>       when
>
>               bmiClass : BMIClass($bmi : bmi <
>
> 18.5)
>
>       then
>
>               System.out.println("U heeft
>
> ondergewicht");
>
> end
>
>
> rule "Normaal"
>
>       when
>
>               bmiClass : BMIClass(bmi >= 18.5)
>
>               bmiClass : BMIClass(bmi < 25)
>
>       then
>
>               System.out.println("U heeft een
>
> normaal
>
> gewicht");
>
>
> end
>
> _______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> _______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> _______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> <
>
> DroolsTest
>
>
> .java><Sample.drl>_______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> _______________________________________________
>
> rules-users mailing list
>
> rules-users at lists.jboss.org
>
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090504/8bc3aaa3/attachment.html 


More information about the rules-users mailing list