[jboss-svn-commits] JBL Code SVN: r26192 - labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 21 12:11:32 EDT 2009


Author: dsotty
Date: 2009-04-21 12:11:32 -0400 (Tue, 21 Apr 2009)
New Revision: 26192

Added:
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java
   labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java
Log:
interval degrees + operators (alpha version)
test on degree combination by operators

Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluator.java	2009-04-21 16:11:32 UTC (rev 26192)
@@ -0,0 +1,86 @@
+package org.drools.fuzzy.evaluators;
+
+import org.drools.base.BaseImperfectEvaluator;
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.Operator;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.degrees.IDegree;
+import org.drools.degrees.factory.IDegreeFactory;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
+
+public class RandomEvaluator extends BaseImperfectEvaluator {
+
+	public RandomEvaluator(ValueType type, Operator operator) {
+		super(type, operator);		
+	}
+
+	
+	public RandomEvaluator(ValueType type, boolean isNegated,
+			String parameterText) {
+		super(type, RandomEvaluatorDefinition.RANDOM);
+	}
+
+
+	public boolean evaluate(InternalWorkingMemory workingMemory,
+			InternalReadAccessor leftExtractor, Object left,
+			InternalReadAccessor rightExtractor, Object right) {
+		return getFactory(workingMemory).Random().toBoolean();
+	}
+
+	
+	public boolean evaluate(InternalWorkingMemory workingMemory,
+			InternalReadAccessor extractor, Object object, FieldValue value) {
+		return getFactory(workingMemory).Random().toBoolean();
+	}
+
+	
+	public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
+			VariableContextEntry context, Object right) {
+		return getFactory(workingMemory).Random().toBoolean();
+	}
+
+	
+	public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
+			VariableContextEntry context, Object left) {
+		return getFactory(workingMemory).Random().toBoolean();
+	}
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	public IDegree evaluate(InternalWorkingMemory workingMemory,
+			IDegreeFactory factory, InternalReadAccessor extractor,
+			Object object, FieldValue value) {
+		return factory.Random();
+	}
+
+	public IDegree evaluate(InternalWorkingMemory workingMemory,
+			IDegreeFactory factory, InternalReadAccessor leftExtractor,
+			Object left, InternalReadAccessor rightExtractor, Object right) {
+		return factory.Random();
+	}
+
+	public IDegree evaluateCachedLeft(InternalWorkingMemory workingMemory,
+			VariableContextEntry context, IDegreeFactory factory,
+			Object right) {
+		return factory.Random();
+	}
+
+	public IDegree evaluateCachedRight(InternalWorkingMemory workingMemory,
+			VariableContextEntry context, IDegreeFactory factory,
+			Object left) {
+		return factory.Random();
+	}
+	
+	
+	
+
+}

Added: labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java	                        (rev 0)
+++ labs/jbossrules/branches/DroolsChance/drools-core/src/main/java/org/drools/fuzzy/evaluators/RandomEvaluatorDefinition.java	2009-04-21 16:11:32 UTC (rev 26192)
@@ -0,0 +1,197 @@
+package org.drools.fuzzy.evaluators;
+
+
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.WorkingMemory;
+import org.drools.base.BaseEvaluator;
+import org.drools.base.BaseImperfectEvaluator;
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.ImperfectBinaryEvaluatorDefinition;
+import org.drools.base.evaluators.Operator;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.VariableRestriction.ObjectVariableContextEntry;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.Evaluator;
+import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
+
+
+
+
+
+
+
+/**
+ * 
+ * @author sotty
+
+ *
+ */
+public class RandomEvaluatorDefinition 
+	implements ImperfectBinaryEvaluatorDefinition {
+	
+	
+	
+	
+	
+	
+		
+	
+	
+	
+	public static final Operator   RANDOM         = Operator.addOperatorToRegistry( "random",
+            										false );
+
+	private static final String[]  SUPPORTED_IDS = {RANDOM.getOperatorString()};
+
+	private Map<String, Evaluator> cache         = Collections.emptyMap();
+
+	
+	
+	
+	
+	
+	public Evaluator getEvaluator(ValueType type, String operatorId,
+			boolean isNegated, String parameterText) {
+		
+		
+		if ( this.cache == Collections.EMPTY_MAP ) {
+            this.cache = new HashMap<String, Evaluator>();
+        }
+        String key = isNegated + ":" + parameterText;
+        Evaluator eval = this.cache.get( key );
+        if ( eval == null ) {
+            eval = new RandomEvaluator( type,
+                                       isNegated,
+                                       parameterText );
+            this.cache.put( key,
+                            eval );
+        }
+        return eval;
+        
+        
+        
+	}
+
+	public Evaluator getEvaluator(ValueType type, Operator operator,
+			String parameterText) {
+		return getEvaluator(type,operator.getOperatorString(),false,parameterText);
+	}
+
+	public Evaluator getEvaluator(ValueType type, Operator operator) {
+		return getEvaluator(type,operator.getOperatorString(),false,"");
+	}
+
+	public Evaluator getEvaluator(ValueType type, String operatorId,
+			boolean isNegated, String parameterText, Target leftTarget,
+			Target rightTarget) {
+		return getEvaluator(type, operatorId, isNegated, parameterText);
+	}
+	
+	
+	
+	/**
+	 * Operator is known as "far"
+	 */
+	public String[] getEvaluatorIds() {
+		return SUPPORTED_IDS;
+	}
+
+	
+	
+	
+	
+	
+	
+	/** 
+	 * 
+	 * 
+	 */
+	public boolean isNegatable() {
+		return true;
+	}
+
+	
+	
+	/**
+	 * This evaluator operates on fact properties (i.e. age) 
+	 * and not on factHandles. 
+	 * So this returns false
+	 */
+	public boolean operatesOnFactHandles() {
+		return false;
+	}
+
+	
+	
+	
+	
+	/**
+	 * 
+	 */
+	public boolean supportsType(ValueType type) {
+		return type.isNumber();
+	}
+
+	
+	
+	
+	
+	
+	
+	/*
+	 * TODO: Try and understand what this means. Copied from AfterEvalDef.
+	 */
+	
+	
+	public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+		cache = (Map<String, Evaluator>) in.readObject();
+	}
+
+	public void writeExternal(ObjectOutput out) throws IOException {
+		out.writeObject(cache);
+	}
+
+	
+	
+	
+	
+	
+	
+	
+
+	public Target getTarget() {
+		return Target.FACT;
+	}
+
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+}




More information about the jboss-svn-commits mailing list