[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