[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