[jboss-svn-commits] JBL Code SVN: r22248 - in labs/jbossrules/branches/uncDrools5x/Fuzzy Test: bin/fuzzy and 5 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 29 21:37:18 EDT 2008
Author: dsotty
Date: 2008-08-29 21:37:18 -0400 (Fri, 29 Aug 2008)
New Revision: 22248
Modified:
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/data/Room.class
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/FuzzyTest.class
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/domains/DomainPartition.class
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/fuzzy.drl
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/FuzzyTest.java
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/DomainPartition.java
labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl
Log:
New branch for uncertainty support in 5.x
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/data/Room.class
===================================================================
(Binary files differ)
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/FuzzyTest.class
===================================================================
(Binary files differ)
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/domains/DomainPartition.class
===================================================================
(Binary files differ)
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/fuzzy.drl
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/fuzzy.drl 2008-08-29 23:48:59 UTC (rev 22247)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/fuzzy.drl 2008-08-30 01:37:18 UTC (rev 22248)
@@ -31,8 +31,12 @@
eval(true)
then
- System.out.println("Setting initializers ");
+ System.out.println("Define concepts. Is this the right place?? ");
+ // The point is:
+ // XDomain defines the partition.
+ // Should I allow the user to define a partition dynamically?
+
Room.setFieldEvaluator("temperature",
fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
@@ -55,7 +59,13 @@
"evaluators.membership.TriangleMembership, 30, 10"
);
+ Room.setFieldEvaluator("temperature",
+ "scorching",
+ false,
+ "evaluators.membership.TriangleMembership, 150, 50"
+ );
+
Oven.setFieldEvaluator("temperature",
fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
false,
@@ -75,8 +85,10 @@
fuzzy.domains.TemperatureDomain.hotOp.getOperatorString(),
false,
"evaluators.membership.TriangleMembership, 200, 100"
- );
+ );
+
+
Room.setFieldEvaluator("humidity",
fuzzy.domains.HumidityDomain.lowOp.getOperatorString(),
false,
@@ -116,8 +128,19 @@
+rule "Dynamic Heat"
+ when
+ $r : Room( temperature `seems[] "scorching" )
+ //Notice that TemperatureDomain does not have 'scorching'
+ then
+ System.out.println("Dynamic fuzzy evaluator " + drools.getActivationDegree());
+
+end
+
+
+
rule "DoubleHot"
when
$r : Room( temperature `seems[] hot )
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java 2008-08-29 23:48:59 UTC (rev 22247)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java 2008-08-30 01:37:18 UTC (rev 22248)
@@ -3,12 +3,13 @@
import org.drools.base.ValueType;
import org.drools.spi.Evaluator;
+import evaluators.IDynamicEvaluable;
import fuzzy.domains.DomainPartition;
import fuzzy.domains.HumidityDomain;
import fuzzy.domains.TemperatureDomain;
import fuzzy.domains.TypedNumberField;
-public class Room {
+public class Room implements IDynamicEvaluable {
@@ -45,10 +46,14 @@
return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.HOT, Room.class);
}
+ public Evaluator getPred(String opId) {
+ return TemperatureDomain.getInstance().getEvaluator(opId, Room.class);
+ }
+
public void setTemperature(Double temperature) {
this.temperature.setValue(temperature);
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java 2008-08-29 23:48:59 UTC (rev 22247)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java 2008-08-30 01:37:18 UTC (rev 22248)
@@ -18,6 +18,8 @@
import org.drools.spi.IUncertainEvaluator;
import org.drools.spi.InternalReadAccessor;
+import data.Room;
+
import uncertainty.factory.IDegreeFactory;
import uncertainty.truthvals.IUncertainDegree;
@@ -81,7 +83,9 @@
public IUncertainDegree evaluateUncertain(WorkingMemory workingMemory,
InternalReadAccessor extractor, Object object1, FieldValue value) {
- return eval(workingMemory);
+ Evaluator set = ((IDynamicEvaluable) object1).getPred(value.toString());
+
+ return ((IUncertainEvaluator) set).evaluateUncertain(workingMemory, extractor, object1, new LongFieldImpl(1));
}
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/FuzzyTest.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/FuzzyTest.java 2008-08-29 23:48:59 UTC (rev 22247)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/FuzzyTest.java 2008-08-30 01:37:18 UTC (rev 22248)
@@ -143,7 +143,7 @@
private void testRules() {
Room room = new Room();
- room.setTemperature(28.5);
+ room.setTemperature(128.5);
room.setHumidity(0.45);
Oven oven = new Oven();
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/DomainPartition.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/DomainPartition.java 2008-08-29 23:48:59 UTC (rev 22247)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/DomainPartition.java 2008-08-30 01:37:18 UTC (rev 22248)
@@ -55,6 +55,11 @@
this.cache = new HashMap<String, Evaluator>();
}
+ Operator op = map.get(operatorId);
+ if (op == null) {
+ op = Operator.addOperatorToRegistry( operatorId,false );
+ map.put(operatorId, op);
+ }
Evaluator eval = new FuzzyNumericEvaluator( map.get(operatorId), type,
isNegated,
Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl 2008-08-29 23:48:59 UTC (rev 22247)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl 2008-08-30 01:37:18 UTC (rev 22248)
@@ -31,8 +31,12 @@
eval(true)
then
- System.out.println("Setting initializers ");
+ System.out.println("Define concepts. Is this the right place?? ");
+ // The point is:
+ // XDomain defines the partition.
+ // Should I allow the user to define a partition dynamically?
+
Room.setFieldEvaluator("temperature",
fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
@@ -55,7 +59,13 @@
"evaluators.membership.TriangleMembership, 30, 10"
);
+ Room.setFieldEvaluator("temperature",
+ "scorching",
+ false,
+ "evaluators.membership.TriangleMembership, 150, 50"
+ );
+
Oven.setFieldEvaluator("temperature",
fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
false,
@@ -75,8 +85,10 @@
fuzzy.domains.TemperatureDomain.hotOp.getOperatorString(),
false,
"evaluators.membership.TriangleMembership, 200, 100"
- );
+ );
+
+
Room.setFieldEvaluator("humidity",
fuzzy.domains.HumidityDomain.lowOp.getOperatorString(),
false,
@@ -116,8 +128,19 @@
+rule "Dynamic Heat"
+ when
+ $r : Room( temperature `seems[] "scorching" )
+ //Notice that TemperatureDomain does not have 'scorching'
+ then
+ System.out.println("Dynamic fuzzy evaluator " + drools.getActivationDegree());
+
+end
+
+
+
rule "DoubleHot"
when
$r : Room( temperature `seems[] hot )
More information about the jboss-svn-commits
mailing list