[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