[rules-users] Rule problem

Greg Barton greg_barton at yahoo.com
Mon May 4 21:08:24 EDT 2009


Not really. :)  I don't work with ruleflows.

Attached is an implementation using BigDecimal.  It should avoid any floating point problems.  Make sure and use BigDecimal with the pure java version if you want a true measure of relative performance.

--- 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:00 PM
> I have another little problem. I try to do the same with a
> ruleflow  
> (and BMI rules in ruleflow group) and my ruleflow starts
> running and  
> the rules are triggered, but I get no
> system.out.println(...) and mijn  
> flow doesn't continue to the next node.
> 
> Any suggestions?
> 
> Femke
> 
> Op 4-mei-09, om 23:30 heeft Greg Barton het volgende
> geschreven:
> 
> >
> > I wonder if there's some way to introduce strictfp
> into the drl.  
> > (I'm not even sure if that would even solve the
> problem.  But I  
> > figure it'd get you in the ballpark.)  But I think
> it would be  
> > useful to be able to inject strictfp into the
> declarations of any  
> > generated drools classes.
> >
> > --- 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, 4:11 PM
> >> I solved the problem by removing every double in
> the
> >> sample.drl. How
> >> van I fix the double problem if I really wanted to
> :)? In
> >> this case it
> >> is unnecassary but there must be a solution?
> >>
> >> Thanks for all the help!
> >>
> >> Femke
> >>
> >> Op 4-mei-09, om 21:48 heeft Wolfgang Laun het
> volgende
> >> geschreven:
> >>
> >>> 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
> >>>
> >>>
> >>>
> _______________________________________________
> >>> 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 --------------
A non-text attachment was scrubbed...
Name: Sample.drl
Type: application/octet-stream
Size: 694 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/rules-users/attachments/20090504/026f3e61/attachment.obj 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: DroolsTest.java
Type: text/x-java
Size: 2611 bytes
Desc: not available
Url : http://lists.jboss.org/pipermail/rules-users/attachments/20090504/026f3e61/attachment.bin 


More information about the rules-users mailing list