[jboss-svn-commits] JBL Code SVN: r25959 - in labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools: degrees and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Apr 5 15:50:18 EDT 2009
Author: dsotty
Date: 2009-04-05 15:50:15 -0400 (Sun, 05 Apr 2009)
New Revision: 25959
Added:
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMergeStrategy.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java
labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java
Log:
Imperfect Drools experimental
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/IDegreeFactory.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,64 @@
+package org.drools.degrees.factory;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.reteoo.filters.IFilterStrategy;
+
+import org.drools.degrees.operators.IMergeStrategy;
+import org.drools.degrees.operators.INullHandlingStrategy;
+
+public interface IDegreeFactory {
+
+
+
+
+
+
+
+ public IDegree buildDegree(float val);
+
+
+ public IDegree True();
+
+ public IDegree False();
+
+ public IDegree Unknown();
+
+ public IDegree fromBoolean(boolean b);
+
+ public IDegreeCombiner getAndOperator();
+
+ public IDegreeCombiner getMinAndOperator();
+
+ public IDegreeCombiner getOrOperator();
+
+ public IDegreeCombiner getMaxOrOperator();
+
+ public IDegreeCombiner getEquivOperator();
+
+
+ public IDegreeCombiner getAggregator();
+
+
+ public IDegreeCombiner getModusPonensOp();
+
+// public IDegreeCombiner getEquivModusPonensOp();
+
+
+// public IDegree mergeIntersect(IDegree d1, IDegree d2);
+
+
+// public IDegreeCombiner getInductionOperator();
+
+ public IDegreeCombiner getNegationOperator();
+
+
+ public IFilterStrategy getDefaultStrategy();
+
+ public IMergeStrategy getMergeStrategy();
+
+ public INullHandlingStrategy getNullHandlingStrategy();
+
+
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleDegreeFactory.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,113 @@
+package org.drools.degrees.factory;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+import org.drools.degrees.operators.IMergeStrategy;
+import org.drools.degrees.operators.INullHandlingStrategy;
+import org.drools.degrees.operators.simple.SimpleAverage;
+import org.drools.degrees.operators.simple.SimpleDotAnd;
+import org.drools.degrees.operators.simple.SimpleEquiv;
+import org.drools.degrees.operators.simple.SimpleMaxOr;
+import org.drools.degrees.operators.simple.SimpleMinAnd;
+import org.drools.degrees.operators.simple.SimpleNot;
+import org.drools.degrees.operators.simple.SimpleMergeStrategy;
+import org.drools.degrees.operators.simple.SimpleNullHandlingStrategy;
+
+import org.drools.reteoo.filters.IFilterStrategy;
+import org.drools.reteoo.filters.SimpleFilterStrategy;
+
+
+
+public class SimpleDegreeFactory implements IDegreeFactory {
+
+
+ public IDegree buildDegree(float val) {
+ return new SimpleDegree(val);
+ }
+
+ public IDegree False() {
+ return new SimpleDegree(0);
+ }
+
+
+ public IDegree True() {
+ return new SimpleDegree(1);
+ }
+
+
+ public IDegree fromBoolean(boolean b) {
+ return b ? new SimpleDegree(1) : new SimpleDegree(0);
+ }
+
+
+ public IDegreeCombiner getAndOperator() {
+ return new SimpleDotAnd();
+ }
+
+
+ public IDegreeCombiner getOrOperator() {
+ return new SimpleMaxOr();
+ }
+
+ public IDegreeCombiner getEquivOperator() {
+ return new SimpleEquiv();
+ }
+
+ public IDegreeCombiner getAggregator() {
+ return new SimpleMaxOr();
+ }
+
+ public IDegree Unknown() {
+ return False();
+ }
+
+
+ public IDegreeCombiner getModusPonensOp() {
+ return new SimpleMinAnd();
+ }
+
+ public IDegree mergeIntersect(IDegree d1,
+ IDegree d2) {
+ return getAggregator().eval(new IDegree[] {d1,d2});
+ }
+
+
+ public IDegreeCombiner getEquivModusPonensOp() {
+ // TODO Auto-generated method stub
+ return new SimpleDotAnd();
+ }
+
+
+ public IDegreeCombiner getInductionOperator() {
+ // TODO Auto-generated method stub
+ return new SimpleAverage() ;
+ }
+
+
+ public IDegreeCombiner getMaxOrOperator() {
+ return new SimpleMaxOr();
+ }
+
+
+ public IDegreeCombiner getMinAndOperator() {
+ return new SimpleMinAnd();
+ }
+
+ public IDegreeCombiner getNegationOperator() {
+ return new SimpleNot();
+ }
+
+ public IFilterStrategy getDefaultStrategy() {
+ return SimpleFilterStrategy.getInstance();
+ }
+
+ public IMergeStrategy getMergeStrategy() {
+ return new SimpleMergeStrategy();
+ }
+
+ public INullHandlingStrategy getNullHandlingStrategy() {
+ return new SimpleNullHandlingStrategy();
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/factory/SimpleFuzzyDegreeFactory.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,13 @@
+package org.drools.degrees.factory;
+
+import org.drools.reteoo.filters.FuzzyFilterStrategy;
+import org.drools.reteoo.filters.IFilterStrategy;
+import org.drools.reteoo.filters.SimpleFilterStrategy;
+
+public class SimpleFuzzyDegreeFactory extends SimpleDegreeFactory {
+
+ public IFilterStrategy getDefaultStrategy() {
+ return FuzzyFilterStrategy.getInstance();
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,33 @@
+/*
+ * Created on 11/giu/07
+ *
+ */
+package org.drools.degrees.operators;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+
+
+/**
+ * Strategy interface
+ *
+ * Generically combines generic truth values
+ *
+ * @author Sotty
+ *
+ */
+public interface IDegreeCombiner {
+
+ /**
+ * Combination
+ *
+ * @param args The truth values to be combined
+ * @return The output combination
+ */
+ public IDegree eval(IDegree[] args);
+
+
+ public IDegree eval(Collection<? extends IDegree> args);
+
+}
Property changes on: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IDegreeCombiner.java
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/IMergeStrategy.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,9 @@
+package org.drools.degrees.operators;
+
+import org.drools.degrees.IDegree;
+
+public interface IMergeStrategy extends IDegreeCombiner {
+
+ public IDegree eval(IDegree[] degrees, INullHandlingStrategy nullStrat);
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/INullHandlingStrategy.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,10 @@
+package org.drools.degrees.operators;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+
+public interface INullHandlingStrategy {
+
+ public IDegree convertNull();
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleAverage.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,45 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+public final class SimpleAverage implements IDegreeCombiner {
+
+
+
+ public IDegree eval(IDegree[] args) {
+ float acc = 0;
+ float wgts = 0;
+// SimpleDotAnd op = new SimpleDotAnd();
+
+
+ // So the number of elements is actually twice
+ for (int j = 0; j < args.length; j = j+3) {
+ SimpleDegree integrand = (SimpleDegree) args[j];
+// SimpleDegree constraint = (SimpleDegree) args[j+1];
+ SimpleDegree weight = (SimpleDegree) args[j+2];
+
+ float w = weight.getValue();
+
+ if (w > wgts) {
+ wgts = weight.getValue();
+ acc = integrand.getValue();
+ }
+
+
+ }
+
+ return new SimpleDegree(acc);
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleDotAnd.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,28 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+
+public class SimpleDotAnd implements IDegreeCombiner {
+
+
+ public IDegree eval(IDegree[] args) {
+ float ans = 1;
+ for (IDegree deg : args) {
+ SimpleDegree d = deg.getDegree();
+ ans *= d.getValue();
+ }
+
+ return new SimpleDegree(ans);
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleEquiv.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,25 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+public class SimpleEquiv implements IDegreeCombiner {
+
+
+ public IDegree eval(IDegree[] args) {
+ return new SimpleDegree( 1 - Math.abs(
+ args[0].getDegree().getValue()
+ - args[1].getDegree().getValue())
+ );
+ }
+
+
+ public IDegree eval(Collection<? extends IDegree> args) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMaxOr.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,28 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+
+public class SimpleMaxOr implements IDegreeCombiner {
+
+
+ public IDegree eval(IDegree[] args) {
+ float ans = 1;
+ for (IDegree deg : args) {
+ SimpleDegree d = deg.getDegree();
+ ans = Math.max(ans,d.getValue());
+ }
+
+ return new SimpleDegree(ans);
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMergeStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMergeStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMergeStrategy.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,34 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IMergeStrategy;
+import org.drools.degrees.operators.INullHandlingStrategy;
+
+public class SimpleMergeStrategy implements IMergeStrategy {
+
+ public IDegree eval(IDegree[] degrees, INullHandlingStrategy nullStrat) {
+
+ float val = 0;
+ for (IDegree deg : degrees) {
+ if (deg == null)
+ val = Math.max(val,nullStrat.convertNull().getDegree().getValue());
+ else
+ val = Math.max(val,deg.getDegree().getValue());
+ }
+
+ return new SimpleDegree(val);
+ }
+
+ public IDegree eval(IDegree[] args) {
+ return eval(args, new SimpleNullHandlingStrategy());
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleMinAnd.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,27 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+public class SimpleMinAnd implements IDegreeCombiner {
+
+
+ public IDegree eval(IDegree[] args) {
+ float ans = 1;
+ for (IDegree deg : args) {
+ SimpleDegree d = deg.getDegree();
+ ans = Math.min(ans,d.getValue());
+ }
+
+ return new SimpleDegree(ans);
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNot.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,20 @@
+package org.drools.degrees.operators.simple;
+
+import java.util.Collection;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.IDegreeCombiner;
+
+public class SimpleNot implements IDegreeCombiner {
+
+ public IDegree eval(IDegree[] args) {
+ return new SimpleDegree(1-args[0].getDegree().getValue());
+ }
+
+ public IDegree eval(Collection<? extends IDegree> args) {
+ return new SimpleDegree(1-args.iterator().next().getDegree().getValue());
+
+ }
+
+}
Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/degrees/operators/simple/SimpleNullHandlingStrategy.java 2009-04-05 19:50:15 UTC (rev 25959)
@@ -0,0 +1,13 @@
+package org.drools.degrees.operators.simple;
+
+import org.drools.degrees.IDegree;
+import org.drools.degrees.SimpleDegree;
+import org.drools.degrees.operators.INullHandlingStrategy;
+
+public class SimpleNullHandlingStrategy implements INullHandlingStrategy {
+
+ public IDegree convertNull() {
+ return new SimpleDegree(0);
+ }
+
+}
More information about the jboss-svn-commits
mailing list