[jboss-svn-commits] JBL Code SVN: r25406 - in labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools: base/evaluators and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Feb 24 09:44:43 EST 2009
Author: dsotty
Date: 2009-02-24 09:44:43 -0500 (Tue, 24 Feb 2009)
New Revision: 25406
Added:
labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java
labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java
labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java
labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java
labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java
labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java
Log:
updates
Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/BaseUncertainEvaluator.java 2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,83 @@
+/**
+ *
+ */
+package org.drools.base;
+
+import org.drools.IUncertainRuleBase;
+import org.drools.RuntimeDroolsException;
+import org.drools.WorkingMemory;
+import org.drools.base.evaluators.Operator;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.FieldValue;
+import org.drools.spi.IUncertainEvaluator;
+import org.drools.spi.InternalReadAccessor;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * BaseUncertainEvaluator implements the uncertain evaluators
+ * by calling the crisp ones and then converting the boolean
+ * result into the used truth degree
+ *
+ * @author sotty
+ *
+ */
+public abstract class BaseUncertainEvaluator extends BaseEvaluator implements
+ IUncertainEvaluator {
+
+
+ public BaseUncertainEvaluator(final ValueType type, final Operator operator) {
+ super(type,operator);
+ }
+
+
+ private IDegreeFactory getTruthFactory(WorkingMemory workingMemory) {
+ IUncertainRuleBase irb = (IUncertainRuleBase) workingMemory.getRuleBase();
+ if (irb == null)
+ throw new RuntimeDroolsException("Abstract BaseUncertainEvaluator : trying to use uncertain evaluators with crisp rule base");
+ return irb.getTruthFactory();
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.drools.spi.IUncertainEvaluator#evaluateUncertain(org.drools.common.InternalWorkingMemory, org.drools.spi.InternalReadAccessor, java.lang.Object, org.drools.spi.FieldValue)
+ */
+ public IUncertainDegree evaluateUncertain(
+ InternalWorkingMemory workingMemory,
+ InternalReadAccessor extractor, Object object1, FieldValue value) {
+ return getTruthFactory(workingMemory).fromBoolean(this.evaluate(workingMemory, extractor, object1, value));
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.spi.IUncertainEvaluator#evaluateUncertain(org.drools.common.InternalWorkingMemory, org.drools.spi.InternalReadAccessor, java.lang.Object, org.drools.spi.InternalReadAccessor, java.lang.Object)
+ */
+ public IUncertainDegree evaluateUncertain(
+ InternalWorkingMemory workingMemory,
+ InternalReadAccessor leftExtractor, Object left,
+ InternalReadAccessor rightExtractor, Object right) {
+ return getTruthFactory(workingMemory).fromBoolean(this.evaluate(workingMemory,leftExtractor,left,rightExtractor,right));
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.spi.IUncertainEvaluator#evaluateUncertainCachedLeft(org.drools.common.InternalWorkingMemory, org.drools.rule.VariableRestriction.VariableContextEntry, java.lang.Object)
+ */
+ public IUncertainDegree evaluateUncertainCachedLeft(
+ InternalWorkingMemory workingMemory, VariableContextEntry context,
+ Object object1) {
+ return getTruthFactory(workingMemory).fromBoolean(this.evaluateCachedLeft(workingMemory, context, object1));
+ }
+
+ /* (non-Javadoc)
+ * @see org.drools.spi.IUncertainEvaluator#evaluateUncertainCachedRight(org.drools.common.InternalWorkingMemory, org.drools.rule.VariableRestriction.VariableContextEntry, java.lang.Object)
+ */
+ public IUncertainDegree evaluateUncertainCachedRight(
+ InternalWorkingMemory workingMemory, VariableContextEntry context,
+ Object object2) {
+ return getTruthFactory(workingMemory).fromBoolean(this.evaluateCachedRight(workingMemory, context, object2));
+ }
+
+
+
+}
Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/base/evaluators/IUncertainUnaryEvaluatorDefinition.java 2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,22 @@
+/**
+ *
+ */
+package org.drools.base.evaluators;
+
+import org.drools.RuntimeDroolsException;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.FieldValue;
+import org.drools.spi.InternalReadAccessor;
+
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * @author davide
+ *
+ */
+public interface IUncertainUnaryEvaluatorDefinition extends EvaluatorDefinition {
+
+
+
+}
Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/IUncertainInternalFactHandle.java 2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,35 @@
+/**
+ *
+ */
+package org.drools.common;
+
+import java.util.Hashtable;
+
+import org.drools.FactHandle;
+import org.drools.rule.ConstraintSignature;
+import org.drools.spi.Constraint;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * @author davide
+ *
+ */
+public interface IUncertainInternalFactHandle extends InternalFactHandle {
+
+
+
+ public void setPriors(Hashtable<ConstraintSignature, IUncertainDegree> priors);
+ public void setPrior(ConstraintSignature constr, IUncertainDegree prior);
+
+ public boolean mergePriors(Hashtable<ConstraintSignature, IUncertainDegree> priors, IDegreeFactory factory);
+
+ public Hashtable<ConstraintSignature, IUncertainDegree> getPriors();
+
+
+ public boolean isOverruling();
+
+ public void setOverruling(boolean flag);
+
+}
Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/common/UncertainFactHandle.java 2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,108 @@
+/**
+ *
+ */
+package org.drools.common;
+
+import java.util.Hashtable;
+
+import org.drools.rule.ConstraintSignature;
+import org.drools.spi.Constraint;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+/**
+ * @author sotty
+ *
+ */
+public class UncertainFactHandle extends DefaultFactHandle implements
+ IUncertainInternalFactHandle {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 500L;
+
+
+ private Hashtable<ConstraintSignature, IUncertainDegree> priors;
+ private boolean overruling;
+
+
+ public boolean isOverruling() {
+ return overruling;
+ }
+
+ public void setOverruling(boolean flag) {
+ overruling = flag;
+ }
+
+
+ public UncertainFactHandle(final int id,
+ final Object object,
+ Hashtable<ConstraintSignature,IUncertainDegree> priors) {
+ super(id,object);
+ setPriors(priors);
+}
+
+
+ public void setPriors(Hashtable<ConstraintSignature, IUncertainDegree> prems) {
+ priors = prems;
+ }
+
+
+ public void setPrior(ConstraintSignature constr, IUncertainDegree prior) {
+ priors.put(constr, prior);
+ }
+
+ public Hashtable<ConstraintSignature, IUncertainDegree> getPriors() {
+ return priors;
+ }
+
+
+ public boolean mergePriors(Hashtable<ConstraintSignature, IUncertainDegree> priors, IDegreeFactory factory) {
+ Hashtable<ConstraintSignature, IUncertainDegree> avail = getPriors();
+
+ if (avail == null) {
+ this.setPriors(priors);
+ return true;
+ }
+
+ boolean infoChanged = false;
+ for (ConstraintSignature prior : priors.keySet()) {
+ boolean found = false;
+ for (ConstraintSignature field : avail.keySet()) {
+ if (prior.equals(field)) {
+ IUncertainDegree old = avail.get(field);
+ IUncertainDegree nju = priors.get(prior);
+ IUncertainDegree val = merge(old,nju, factory);
+ if (! old.equals(val))
+ infoChanged = true;
+ avail.put(field, val);
+ found = true;
+ }
+ }
+ if (! found) {
+ avail.put(prior, priors.get(prior));
+ infoChanged = true;
+ }
+ }
+
+ return infoChanged;
+ //TODO : Cannot use hashcode with wildcard...
+// if (! avail.containsKey(field)) {
+// avail.put(field, priors.get(field));
+// } else {
+//
+// IUncertainDegree val = merge(avail.get(field),priors.get(field));
+//
+// avail.put(field, val);
+// }
+
+
+ }
+
+
+ protected IUncertainDegree merge(IUncertainDegree v1, IUncertainDegree v2, IDegreeFactory factory) {
+ return factory.getAggregator().eval(new IUncertainDegree[] {v1, v2});
+ }
+}
Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/IFactSetTuple.java 2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,5 @@
+package org.drools.reteoo;
+
+public interface IFactSetTuple {
+
+}
Added: labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/drools-core/src/main/java/org/drools/reteoo/UncertainAggregateRightTuple.java 2009-02-24 14:44:43 UTC (rev 25406)
@@ -0,0 +1,28 @@
+package org.drools.reteoo;
+
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.Vector;
+
+import org.drools.FactHandle;
+import org.drools.common.InternalFactHandle;
+
+import uncertainty.truthvals.IUncertainDegree;
+
+public class UncertainAggregateRightTuple extends UncertainRightTuple {
+
+
+
+ public UncertainAggregateRightTuple(Set<RightTuple> supportSet,
+ IUncertainDegree existDegree, RightTupleSink sink) {
+
+ super(supportSet.iterator().next().getFactHandle(),existDegree,sink);
+
+ }
+
+
+
+
+
+}
More information about the jboss-svn-commits
mailing list