[jboss-svn-commits] JBL Code SVN: r22242 - in labs/jbossrules/branches/uncDrools5x/Fuzzy Test: bin/data and 9 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 29 14:04:09 EDT 2008


Author: dsotty
Date: 2008-08-29 14:04:09 -0400 (Fri, 29 Aug 2008)
New Revision: 22242

Added:
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Oven.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluatorDefinition.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/membership/SkepticNumericMembershipFunction.java
Modified:
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/data/Fan.class
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/data/Room.class
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/evaluators/FuzzyNumericEvaluator.class
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy.packagebuilder.conf
   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/domains/IDomainPartition.class
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/domains/TemperatureDomain.class
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/domains/TypedNumberField.class
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/fuzzy.drl
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/oldFaithful.drl
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Fan.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/FuzzyNumericEvaluator.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy.packagebuilder.conf
   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/domains/IDomainPartition.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TemperatureDomain.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TypedNumberField.java
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl
   labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/oldFaithful.drl
Log:
New branch for uncertainty support in 5.x

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/data/Fan.class
===================================================================
(Binary files differ)

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/data/Room.class
===================================================================
(Binary files differ)

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/evaluators/FuzzyNumericEvaluator.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/domains/IDomainPartition.class
===================================================================
(Binary files differ)

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/domains/TemperatureDomain.class
===================================================================
(Binary files differ)

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/domains/TypedNumberField.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 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/fuzzy.drl	2008-08-29 18:04:09 UTC (rev 22242)
@@ -12,6 +12,8 @@
 import data.Room;
 import data.Fan;
 import data.Act;
+import data.Oven;
+import fuzzy.domains.*;
 
 
 #declare any global variables here
@@ -20,32 +22,163 @@
 
 
 
+
+rule "Init"
+
+	salience 1000
+
+	when
+		eval(true)
+	then	
+	
+		System.out.println("Setting initializers ");
+		
+			
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0, 10"
+								);
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coolOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 10, 10"
+								);	
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.warmOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 20, 10"
+								);								
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.hotOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 30, 10"
+								);	
+								
+								
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 25, 10"
+								);
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coolOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 35, 10"
+								);	
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.warmOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 100, 60"
+								);								
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.hotOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 200, 100"
+								);	
+								
+		Room.setFieldEvaluator("humidity",
+								fuzzy.domains.HumidityDomain.lowOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0, 0.5"
+								);					
+		Room.setFieldEvaluator("humidity",
+								fuzzy.domains.HumidityDomain.mediumOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0.5, 0.5"
+								);
+		Room.setFieldEvaluator("humidity",
+								fuzzy.domains.HumidityDomain.highOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 1, 0.5"
+								);
+								
+		Fan.setFieldEvaluator("speed",
+								fuzzy.domains.SpeedDomain.stopOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0, 10"
+								);
+		Fan.setFieldEvaluator("speed",
+								fuzzy.domains.SpeedDomain.slowOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 10, 10"
+								);
+		Fan.setFieldEvaluator("speed",
+								fuzzy.domains.SpeedDomain.fastOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 20, 10"
+								);
+							
+		
+end		
+
+
+
+
+
+
+
+rule "DoubleHot"
+	when
+		$r : Room( temperature `seems[] hot )				
+		$o : Oven( temperature `seems[] hot )
+	then
+		System.out.println("Heat with different meanings " + drools.getActivationDegree());
+		
+end
+
+
+rule "Hot_generic"
+	when
+		$r : Room( temperature `hot[evaluators.membership.TriangleMembership, 30, 10] 1)
+	then
+		System.out.println("Hot works as op itself " + drools.getActivationDegree());
+end
+
+
+rule "Hot"
+	when 
+		$r: Room( temperature `seems[] hot ,
+				  humidity `seems[] medium )
+	then
+		System.out.println("Room is hot at degree " + drools.getActivationDegree());
+		
+		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
+			priors.put(new ConstraintSignature("speed","seems","fast"), drools.getActivationDegree());
+			
+		insertLogical(new Fan(),priors);
+		
+end	
+
+
+/*
 rule "Cold"
 	when 
 		$r: Room( 
-				  temperature `cold[evaluators.membership.TriangleMembership, 0, 10] 1 ,
-				  humidity `low[evaluators.membership.TriangleMembership, 0, 0.5] 1 
+				  temperature `seems[] cold ,
+				  humidity `seems[] low 
 				)		
 	then
 		System.out.println("Room is cold at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","stop","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","stop"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
 end
 
 
+
 rule "Cool"
 	when 
-		$r: Room( temperature `cool[evaluators.membership.TriangleMembership, 10, 10] 1 ,
-				  humidity `medium[evaluators.membership.TriangleMembership, 0.5, 0.5] 1 )
+		$r: Room( temperature `seems[] cool ,
+				  humidity `seems[] medium )
 	then
 		System.out.println("Room is cool at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","stop","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","stop"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
@@ -54,29 +187,31 @@
 
 rule "Warm"
 	when 
-		$r: Room( temperature `warm[evaluators.membership.TriangleMembership, 20, 10] 1 ,
-				  humidity `medium[evaluators.membership.TriangleMembership, 1, 0.5] 1 )
+		$r: Room( temperature `seems[] warm ,
+				  humidity `seems[] medium )
 	then
 		System.out.println("Room is warm at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","slow","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","slow"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
 end
 	
+
+
 	
 	
-rule "Hot"
+rule "Hotter"
 	when 
-		$r: Room( temperature `hot[evaluators.membership.TriangleMembership, 30, 10] 1 ,
-				  humidity `high[evaluators.membership.TriangleMembership, 1, 0.5] 1 )
+		$r: Room( temperature `seems[] hot ,
+				  humidity `seems[] high )
 	then
-		System.out.println("Room is hot at degree " + drools.getActivationDegree());
+		System.out.println("Room is hotter at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","fast","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","fast"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
@@ -88,27 +223,30 @@
 
 rule "Fan Stop"
 	when
-		$f : Fan( speed `stop[evaluators.membership.TriangleMembership, 0, 10] 1)
+		$f : Fan( speed `seems[] stop)
 	then
 		System.out.println("Stop fan" + drools.getActivationDegree());	
-		$f.setSpeedInfo("stop","evaluators.membership.TriangleMembership, 0, 10",drools.getActivationDegree());
+		$f.setSpeedInfo("stop",drools.getActivationDegree());
 end
 
 
 rule "Fan Slow"
 	when
-		$f : Fan( speed `slow[evaluators.membership.TriangleMembership, 10, 10] 1)
+		$f : Fan( speed `seems[] slow)
 	then
 		System.out.println("Slow fan" + drools.getActivationDegree());	
-		$f.setSpeedInfo("slow","evaluators.membership.TriangleMembership, 10, 10",drools.getActivationDegree());
+		$f.setSpeedInfo("slow",drools.getActivationDegree());
+		
 end
 
+
+
 rule "Fan Fast"
 	when
-		$f : Fan( speed `fast[evaluators.membership.TriangleMembership, 20, 10] 1)
+		$f : Fan( speed `seems[] fast)
 	then
-		System.out.println("Fast fan" + drools.getActivationDegree());	
-		$f.setSpeedInfo("fast","evaluators.membership.TriangleMembership, 20, 10",drools.getActivationDegree());
+		System.out.println("Fast fan" + drools.getActivationDegree());
+		$f.setSpeedInfo("fast",drools.getActivationDegree());			
 end
 
 
@@ -116,9 +254,9 @@
 
 
 rule "Act"
-	when
-		Act()
+	when		
 		$f : Fan()
 	then
 		System.out.println("Fan activated at speed " + $f.getSpeed());	
 end
+*/
\ No newline at end of file

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/oldFaithful.drl
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/oldFaithful.drl	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy/oldFaithful.drl	2008-08-29 18:04:09 UTC (rev 22242)
@@ -35,9 +35,9 @@
 		//System.out.println("Rule 2 fired for " + $s + " at deg " + drools.getActivationDegree());
 		$s.setEpsilon2(drools.getActivationDegree().getDegree().getValue());
 end
+
 */
 
-
 rule "Class1_clust"
 	when
 		$s : Sample2 (	this `classify[] 0 )

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy.packagebuilder.conf
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy.packagebuilder.conf	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/bin/fuzzy.packagebuilder.conf	2008-08-29 18:04:09 UTC (rev 22242)
@@ -31,20 +31,13 @@
 drools.evaluator.matches = org.drools.base.evaluators.MatchesEvaluatorsDefinition
 drools.evaluator.soundslike = org.drools.base.evaluators.SoundslikeEvaluatorsDefinition
 
-drools.evaluator.cold = evaluators.TemperatureEvaluatorDefinition
-drools.evaluator.cool = evaluators.TemperatureEvaluatorDefinition
-drools.evaluator.warm = evaluators.TemperatureEvaluatorDefinition
-drools.evaluator.hot = evaluators.TemperatureEvaluatorDefinition
 
-drools.evaluator.low = evaluators.HumidityEvaluatorDefinition
-drools.evaluator.medium = evaluators.HumidityEvaluatorDefinition
-drools.evaluator.high = evaluators.HumidityEvaluatorDefinition
 
-drools.evaluator.slow = evaluators.SpeedEvaluatorDefinition
-drools.evaluator.stop = evaluators.SpeedEvaluatorDefinition
-drools.evaluator.fast = evaluators.SpeedEvaluatorDefinition
-
 drools.evaluator.classify = evaluators.FakeSubSymbEvaluatorDefinition
 
+drools.evaluator.seems = evaluators.SeemsEvaluatorDefinition
+drools.evaluator.hot = evaluators.TemperatureEvaluatorDefinition
 
 
+
+

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Fan.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Fan.java	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Fan.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -1,7 +1,12 @@
 package data;
 
+import org.drools.base.ValueType;
+import org.drools.spi.Evaluator;
+
 import uncertainty.truthvals.IUncertainDegree;
+import fuzzy.domains.HumidityDomain;
 import fuzzy.domains.SpeedDomain;
+import fuzzy.domains.TemperatureDomain;
 import fuzzy.domains.TypedNumberField;
 
 public class Fan {
@@ -9,15 +14,25 @@
 	private TypedNumberField speed = new TypedNumberField(SpeedDomain.getInstance());;
 	
 	
+	public static void setFieldEvaluator(String field, String operatorId, boolean isNegated, String parameterText) {
+		
+//		operatorId += Fan.class.getName();
+		
+		if (field.equals("speed")) {
+			SpeedDomain.getInstance().addEvaluator(Fan.class,ValueType.DOUBLE_TYPE, operatorId, isNegated, parameterText);
+		}
+		
+	}
 	
 	
+	
 
 	public void setSpeed(Double speed) {
 		this.speed.setValue(speed);
 	}
 	
-	public void setSpeedInfo(String op, String parm, IUncertainDegree deg) {
-		this.speed.setInfo(op, parm, deg);
+	public void setSpeedInfo(String op, IUncertainDegree deg) {
+		this.speed.setInfo(Fan.class,op, "", deg);
 	}
 
 	public Double getSpeed() {
@@ -28,6 +43,19 @@
 	}
 	
 	
+	
+	public Evaluator getSlow() {
+		return SpeedDomain.getInstance().getEvaluator(SpeedDomain.SLOW, Fan.class);
+	}	
+	public Evaluator getStop() {
+		return SpeedDomain.getInstance().getEvaluator(SpeedDomain.STOP, Fan.class);
+	}
+	public Evaluator getFast() {
+		return SpeedDomain.getInstance().getEvaluator(SpeedDomain.FAST, Fan.class);
+	}
+	
+	
+	
 	public boolean equals(Object other) {
 		if (other == null) return false;
 		if (other.getClass() != this.getClass()) return false;

Added: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Oven.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Oven.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Oven.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -0,0 +1,61 @@
+package data;
+
+import org.drools.base.ValueType;
+import org.drools.spi.Evaluator;
+
+import fuzzy.domains.DomainPartition;
+import fuzzy.domains.HumidityDomain;
+import fuzzy.domains.TemperatureDomain;
+import fuzzy.domains.TypedNumberField;
+
+public class Oven {
+
+	
+	
+	public static void setFieldEvaluator(String field, String operatorId, boolean isNegated, String parameterText) {
+		
+//		operatorId = DomainPartition.buildContextualId(Oven.class, operatorId);
+		
+		if (field.equals("temperature")) {
+			TemperatureDomain.getInstance().addEvaluator(Oven.class,ValueType.DOUBLE_TYPE, operatorId, isNegated, parameterText);
+		}		
+		
+	}
+	
+	
+	public Evaluator getCold() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.COLD, Oven.class);
+	}
+	
+	public Evaluator getWarm() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.WARM, Oven.class);
+	}
+	
+	public Evaluator getCool() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.COOL, Oven.class);			
+	}
+	
+	public Evaluator getHot() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.HOT, Oven.class);
+	}
+	
+	
+	private TypedNumberField temperature = new TypedNumberField(TemperatureDomain.getInstance());
+	
+			
+	public void setTemperature(Double temperature) {
+		this.temperature.setValue(temperature);
+	}
+
+	public Double getTemperature() {
+		Number n = temperature.getValue();
+		if (n != null)
+			return n.doubleValue();
+		return null;
+	}
+	
+	
+
+
+	
+}

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/data/Room.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -1,5 +1,9 @@
 package data;
 
+import org.drools.base.ValueType;
+import org.drools.spi.Evaluator;
+
+import fuzzy.domains.DomainPartition;
 import fuzzy.domains.HumidityDomain;
 import fuzzy.domains.TemperatureDomain;
 import fuzzy.domains.TypedNumberField;
@@ -8,10 +12,43 @@
 
 	
 	
+	public static void setFieldEvaluator(String field, String operatorId, boolean isNegated, String parameterText) {
+		
+//		operatorId = DomainPartition.buildContextualId(Room.class,operatorId);
+		
+		if (field.equals("temperature")) {
+			TemperatureDomain.getInstance().addEvaluator(Room.class,ValueType.DOUBLE_TYPE, operatorId, isNegated, parameterText);
+		}
+		else if (field.equals("humidity")) {
+			HumidityDomain.getInstance().addEvaluator(Room.class,ValueType.DOUBLE_TYPE, operatorId, isNegated, parameterText);
+		}
+		
+	}
+	
+	
 	private TypedNumberField temperature = new TypedNumberField(TemperatureDomain.getInstance());
 	
 	
+	public Evaluator getCold() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.COLD, Room.class);
+	}
 	
+	public Evaluator getWarm() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.WARM, Room.class);
+	}
+	
+	public Evaluator getCool() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.COOL, Room.class);			
+	}
+	
+	public Evaluator getHot() {
+		return TemperatureDomain.getInstance().getEvaluator(TemperatureDomain.HOT, Room.class);
+	}
+	
+	
+	
+	
+	
 
 	public void setTemperature(Double temperature) {
 		this.temperature.setValue(temperature);
@@ -39,11 +76,22 @@
 		return null;
 	}
 
+	public Evaluator getLow() {
+		return HumidityDomain.getInstance().getEvaluator(HumidityDomain.LOW, Room.class);
+	}
+	public Evaluator getMedium() {
+		return HumidityDomain.getInstance().getEvaluator(HumidityDomain.MEDIUM, Room.class);
+	}
+	public Evaluator getHigh() {
+		return HumidityDomain.getInstance().getEvaluator(HumidityDomain.HIGH, Room.class);
+	}
 
+
 	
 	
 	
 	
 	
 	
+	
 }

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/FuzzyNumericEvaluator.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/FuzzyNumericEvaluator.java	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/FuzzyNumericEvaluator.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -6,6 +6,7 @@
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.lang.reflect.InvocationTargetException;
+import java.rmi.server.Skeleton;
 import java.util.StringTokenizer;
 
 
@@ -22,6 +23,7 @@
 import org.drools.spi.InternalReadAccessor;
 
 import evaluators.membership.INumericSetMembershipFunction;
+import evaluators.membership.SkepticNumericMembershipFunction;
 import evaluators.membership.TriangleMembership;
 
 import uncertainty.factory.IDegreeFactory;
@@ -41,7 +43,7 @@
 	public FuzzyNumericEvaluator(Operator op, final ValueType type,
             				final boolean isNegated,
             				final String parameters) {
-			super( type , op);
+			super( type , op );
 			this.isNegated = isNegated;
 			
             this.mu = this.parseParameters( parameters );	        
@@ -167,7 +169,10 @@
      */
     private INumericSetMembershipFunction parseParameters(String parameters) {
     	    	    	    	
-        StringTokenizer tok = new StringTokenizer(parameters," ,");        
+        StringTokenizer tok = new StringTokenizer(parameters," ,");   
+        if (tok.countTokens() == 0) 
+        	return new SkepticNumericMembershipFunction();
+        	
         String className = tok.nextToken();
                 
         int numParm = tok.countTokens();

Added: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluator.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -0,0 +1,167 @@
+package evaluators;
+
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+
+import org.drools.IUncertainRuleBase;
+import org.drools.RuntimeDroolsException;
+import org.drools.WorkingMemory;
+import org.drools.base.BaseUncertainEvaluator;
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.Operator;
+import org.drools.base.field.LongFieldImpl;
+import org.drools.common.InternalWorkingMemory;
+import org.drools.rule.VariableRestriction.VariableContextEntry;
+import org.drools.spi.Evaluator;
+import org.drools.spi.FieldValue;
+import org.drools.spi.IUncertainEvaluator;
+import org.drools.spi.InternalReadAccessor;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+
+
+
+public class SeemsEvaluator extends BaseUncertainEvaluator implements IUncertainEvaluator {
+	
+	
+	
+	 
+	
+	
+	
+	
+	
+
+	
+
+
+	
+	
+	public SeemsEvaluator() {		
+		this(ValueType.OBJECT_TYPE,false,"");
+	}
+	
+	
+	public SeemsEvaluator(final ValueType type,
+            				final boolean isNegated,
+            				final String parameters) {
+			super( type,
+                   SeemsEvaluatorDefinition.SEEMS);            
+	}
+	
+	
+	
+	
+	public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+        super.readExternal(in);
+        
+
+    }
+
+    public void writeExternal(ObjectOutput out) throws IOException {
+        super.writeExternal(out);
+
+
+    }
+	
+	
+   
+    protected IUncertainDegree eval(WorkingMemory workingMemory) {
+    	if (! (workingMemory.getRuleBase() instanceof IUncertainRuleBase)) {
+			throw new RuntimeDroolsException("Seems Evaluator : Uncertainty has not been enabled in the current Rule Base");
+		}
+		IDegreeFactory factory = ((IUncertainRuleBase) workingMemory.getRuleBase()).getTruthFactory();
+		
+		return factory.Unknown();
+    }
+    
+    public IUncertainDegree evaluateUncertain(WorkingMemory workingMemory,
+			InternalReadAccessor extractor, Object object1, FieldValue value) {
+		
+    	return eval(workingMemory);
+		
+	}
+    
+	public boolean evaluate(InternalWorkingMemory workingMemory,
+			InternalReadAccessor extractor, Object object1, FieldValue value) {			
+		return eval(workingMemory).toBoolean();
+	}
+
+	
+	public IUncertainDegree evaluateUncertain(WorkingMemory workingMemory,
+			InternalReadAccessor leftExtractor, Object left,
+			InternalReadAccessor rightExtractor, Object right) {
+		
+		
+		Object set = rightExtractor.getValue(right);
+		
+		return ((IUncertainEvaluator) set).evaluateUncertain(workingMemory, leftExtractor, left, new LongFieldImpl(1));
+								
+	}
+	
+	public boolean evaluate(InternalWorkingMemory workingMemory,
+			InternalReadAccessor leftExtractor, Object left,
+			InternalReadAccessor rightExtractor, Object right) {		
+		return eval(workingMemory).toBoolean();
+	}
+
+	
+	public IUncertainDegree evaluateUncertainCachedLeft(WorkingMemory workingMemory,
+			VariableContextEntry context, Object object1) {
+		return eval(workingMemory);
+	}
+	public boolean evaluateCachedLeft(InternalWorkingMemory workingMemory,
+			VariableContextEntry context, Object object1) {
+		return eval(workingMemory).toBoolean();
+	}
+
+	
+	public IUncertainDegree evaluateUncertainCachedRight(WorkingMemory workingMemory,
+			VariableContextEntry context, Object object2) {
+		return eval(workingMemory);
+	}
+	public boolean evaluateCachedRight(InternalWorkingMemory workingMemory,
+			VariableContextEntry context, Object object2) {
+		return eval(workingMemory).toBoolean();
+	}
+	
+	
+	
+	
+	@Override
+    public int hashCode() {
+        final int PRIME = 37;
+        int result = PRIME * super.hashCode();                    
+        return result;
+    }
+	
+	
+    /* (non-Javadoc)
+     * @see java.lang.Object#equals(java.lang.Object)
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if ( this == obj ) return true;
+        if ( !super.equals( obj ) ) return false;
+        if ( getClass() != obj.getClass() ) return false;     
+        return true;
+    }
+
+    /**
+     * This methods tries to parse the string of parameters to customize
+     * the evaluator.
+     *
+     * @param parameters
+     */
+    private void parseParameters(String parameters) {
+        
+    }
+
+	
+
+}
+	
+	
\ No newline at end of file

Added: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluatorDefinition.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluatorDefinition.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/SeemsEvaluatorDefinition.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -0,0 +1,197 @@
+package evaluators;
+
+import uncertainty.factory.IDegreeFactory;
+
+
+import java.awt.geom.Point2D;
+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.IUncertainRuleBase;
+import org.drools.RuntimeDroolsException;
+import org.drools.WorkingMemory;
+import org.drools.base.BaseEvaluator;
+import org.drools.base.BaseUncertainEvaluator;
+import org.drools.base.ValueType;
+import org.drools.base.evaluators.IUncertainBinaryEvaluatorDefinition;
+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.IUncertainEvaluator;
+import org.drools.spi.InternalReadAccessor;
+
+
+import uncertainty.truthvals.IUncertainDegree;
+
+
+
+
+/**
+ * 
+ * @author sotty
+
+ *
+ */
+public class SeemsEvaluatorDefinition implements IUncertainBinaryEvaluatorDefinition {
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	public static final Operator   SEEMS         = Operator.addOperatorToRegistry( "seems",
+            										false );
+
+	private static final String[]  SUPPORTED_IDS = {SEEMS.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 SeemsEvaluator( 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,"");
+	}
+
+	
+	
+	
+	
+	/**
+	 * 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);
+	}
+
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+	
+}

Added: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/membership/SkepticNumericMembershipFunction.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/membership/SkepticNumericMembershipFunction.java	                        (rev 0)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/evaluators/membership/SkepticNumericMembershipFunction.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -0,0 +1,29 @@
+package evaluators.membership;
+
+import uncertainty.factory.IDegreeFactory;
+import uncertainty.truthvals.IUncertainDegree;
+
+public class SkepticNumericMembershipFunction implements
+		INumericSetMembershipFunction {
+
+	@Override
+	public IUncertainDegree eval(Number number, IDegreeFactory factory) {
+		return factory.Unknown();
+	}
+
+	@Override
+	public Number getCenter() {
+		return 0;
+	}
+
+	@Override
+	public void init(String[] args) {
+
+	}
+
+	@Override
+	public IUncertainDegree eval(Object object, IDegreeFactory factory) {
+		return factory.Unknown();
+	}
+
+}

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/FuzzyTest.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/FuzzyTest.java	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/FuzzyTest.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -27,6 +27,7 @@
 import org.drools.rule.Package;
 
 import data.Act;
+import data.Oven;
 import data.Room;
 import evaluators.membership.TriangleMembership;
 
@@ -112,8 +113,8 @@
         
       
         
-        session.addEventListener( new DebugAgendaEventListener() );
-        session.addEventListener( new DebugWorkingMemoryEventListener() );
+//        session.addEventListener( new DebugAgendaEventListener() );
+//        session.addEventListener( new DebugWorkingMemoryEventListener() );
         
         
         session.setGlobal("factory", factory);
@@ -142,11 +143,18 @@
 	private void testRules() {
 
 		Room room = new Room();
-		room.setTemperature(22.5);
+		room.setTemperature(28.5);
 		room.setHumidity(0.45);
 		
-		session.insert(room,null);		
+		Oven oven = new Oven();
+		oven.setTemperature(180.0);
+		
+		
 		session.fireAllRules();
+		
+		session.insert(room,null);
+		session.insert(oven,null);
+		session.fireAllRules();
 
 		
 		session.insert(new Act(), null);

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 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/DomainPartition.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -8,6 +8,8 @@
 import org.drools.base.evaluators.Operator;
 import org.drools.spi.Evaluator;
 
+import data.Oven;
+
 import uncertainty.truthvals.IUncertainDegree;
 
 import evaluators.FuzzyNumericEvaluator;
@@ -18,66 +20,100 @@
 	
 	private Map<String, Evaluator> cache         = Collections.emptyMap();
 	
-	protected Map<Evaluator, IUncertainDegree> degs = new HashMap<Evaluator, IUncertainDegree>();
 	
+	
 	protected static String[]  SUPPORTED_IDS;
 	
 	
+	public Evaluator getEvaluator(String opId, Class clazz) {				
+		return cache.get(buildContextualId(clazz, opId));
+	}
 	
 	
+	
+	
+	
+	
+	
+	protected String buildKey(String className, String operatorId, boolean isNegated, String parameterText) {
+		return className + ":" + operatorId + ":" + isNegated; //+ ":" + parameterText;
+	}
+	
+	protected String buildContextualId(Class clazz, String operatorId) {
+		//return clazz.getName() + " : " + operatorId;
+		return buildKey(clazz.getName(),operatorId,false,"");
+	} 
+	
+	
+	public Evaluator addEvaluator(Class clazz, ValueType type, String operatorId,
+			boolean isNegated, String parameterText) {
+		
+		System.out.println("Called addEvaluator " + operatorId + " : " + parameterText + ";"); 
+		
+		
+		if ( this.cache == Collections.EMPTY_MAP ) {
+            this.cache = new HashMap<String, Evaluator>();
+        }
+		
+				        		
+		Evaluator eval = new FuzzyNumericEvaluator( map.get(operatorId), type,
+                isNegated,
+                parameterText );
+		
+		String key = buildKey(clazz.getName(), operatorId, isNegated, parameterText);
+		
+			if (this.cache.get(key) != null)
+				System.out.println("WARNING : eval already present " + key);
+		
+		this.cache.put( key , eval );
+		return eval;
+	}
+	
+	
+	
 	public Evaluator getEvaluator(ValueType type, String operatorId,
 			boolean isNegated, String parameterText) {
-		 
+		return getEvaluator("", type, operatorId, isNegated, parameterText);
+	}
+	
+	public Evaluator getEvaluator(String className, ValueType type, String operatorId,
+			boolean isNegated, String parameterText) {
+		System.out.println("Called getEvaluator " + operatorId + " : " + parameterText + ";"); 
 		
 		if ( this.cache == Collections.EMPTY_MAP ) {
             this.cache = new HashMap<String, Evaluator>();
         }
 		
 		
-        String key = operatorId + ":" + isNegated + ":" + parameterText;
+        String key = buildKey(className,operatorId, isNegated, parameterText);
         Evaluator eval = this.cache.get( key );
         if ( eval == null ) {
-            eval = new FuzzyNumericEvaluator( map.get(operatorId), type,
-                                       isNegated,
-                                       parameterText );
-            this.cache.put( key,
-                            eval );
+            eval = addEvaluator(Object.class,type, operatorId, isNegated, parameterText);
         }
+        
         return eval;
         				        
 	}
 
-
-	public void setInfo(String op, String parm, IUncertainDegree deg) {
-		Evaluator ev = cache.get(op + ":false:" + parm);
+	/*
+	public void setInfo(String className, String op, String parm, IUncertainDegree deg) {
+		Evaluator ev = cache.get(buildKey(className,op, false, ""));
 		if (ev != null) {
 			this.degs.put(ev, deg);
 		}
 	}
+	*/
 
-	/**
-	 * 
-	 * Should be strategy-configurable
-	 * @deprecated
-	 */	
-	public Number defuzzify() {
-		
-		double acc = 0;
-		
-		for (Evaluator ev : degs.keySet()) {
-			
-			FuzzyNumericEvaluator fuzzyEv = (FuzzyNumericEvaluator) ev;
-			acc += fuzzyEv.getCenter().doubleValue() * degs.get(ev).getDegree().getValue();
-			System.out.println("General defuzzification : "+ev + " at " + degs.get(ev));
-		}
-		
-		return acc;
-	}
 	
 	
-	public abstract String[] getEvaluatorIds(); 
 	
+	public abstract String[] getEvaluatorIds();
+
+
+
 	
 	
 	
+	
+	
 }

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/IDomainPartition.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/IDomainPartition.java	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/IDomainPartition.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -8,12 +8,18 @@
 public interface IDomainPartition {
 
 	String[] getEvaluatorIds();
+	
+	Evaluator addEvaluator(Class clazz, ValueType type, String operatorId,
+			boolean isNegated, String parameterText);
 
 	Evaluator getEvaluator(ValueType type, String operatorId,
 			boolean isNegated, String parameterText);
+	
+	Evaluator getEvaluator(String className, ValueType type, String operatorId,
+			boolean isNegated, String parameterText);
 
-	void setInfo(String op, String parm, IUncertainDegree deg);
+	//void setInfo(String op, String parm, IUncertainDegree deg);
 
-	Number defuzzify();
+	//Number defuzzify();
 
 }

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TemperatureDomain.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TemperatureDomain.java	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TemperatureDomain.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -36,6 +36,8 @@
 	
 	
 	
+	
+	
 	public static final Operator   coldOp         = Operator.addOperatorToRegistry( TemperatureDomain.COLD,false );
 	public static final Operator   notColdOp      = Operator.addOperatorToRegistry( TemperatureDomain.COLD,true );
 	

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TypedNumberField.java
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TypedNumberField.java	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/domains/TypedNumberField.java	2008-08-29 18:04:09 UTC (rev 22242)
@@ -1,13 +1,28 @@
 package fuzzy.domains;
 
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.base.ValueType;
+import org.drools.spi.Evaluator;
+
+import evaluators.FuzzyNumericEvaluator;
+
 import uncertainty.truthvals.IUncertainDegree;
 
 public class TypedNumberField {
 	
 	protected IDomainPartition domain;
 	
+	protected Map<Evaluator, IUncertainDegree> degs = new HashMap<Evaluator, IUncertainDegree>();
 	
 	
+	public void setFuzzySet(Class clazz, String op, boolean isNegated, String parameterText) {
+		domain.addEvaluator(clazz, ValueType.DOUBLE_TYPE, op, isNegated, parameterText);
+	}
+	
+	
+	
 	public TypedNumberField(IDomainPartition domain) {
 		this.domain = domain;
 	}
@@ -24,12 +39,34 @@
 		return value;
 	}
 	
-	public void setInfo(String op, String parm, IUncertainDegree deg) {
-		domain.setInfo(op, parm, deg);
-		this.setValue(domain.defuzzify());
-		System.out.println("Trying to update speed " + op + " at deg " + deg);
+	public void setInfo(Class clazz,String op, String parm, IUncertainDegree deg) {		
+		Evaluator eval = domain.getEvaluator(clazz.getName(),ValueType.DOUBLE_TYPE, op, false, "");
+		
+		degs.put(eval, deg);
+		this.setValue(defuzzify());
 	}
 	
 	
+	
+	/**
+	 * 
+	 * Should be strategy-configurable
+	 * @deprecated
+	 */	
+	public Number defuzzify() {
+		
+		double acc = 0;
+		
+		for (Evaluator ev : degs.keySet()) {
+			
+			FuzzyNumericEvaluator fuzzyEv = (FuzzyNumericEvaluator) ev;
+			acc += fuzzyEv.getCenter().doubleValue() * degs.get(ev).getDegree().getValue();
+//			System.out.println("General defuzzification : "+ev + " at " + degs.get(ev));
+		}
+		
+		return acc;
+	}
+	
+	
 
 }

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/fuzzy.drl	2008-08-29 18:04:09 UTC (rev 22242)
@@ -12,6 +12,8 @@
 import data.Room;
 import data.Fan;
 import data.Act;
+import data.Oven;
+import fuzzy.domains.*;
 
 
 #declare any global variables here
@@ -20,32 +22,163 @@
 
 
 
+
+rule "Init"
+
+	salience 1000
+
+	when
+		eval(true)
+	then	
+	
+		System.out.println("Setting initializers ");
+		
+			
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0, 10"
+								);
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coolOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 10, 10"
+								);	
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.warmOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 20, 10"
+								);								
+		Room.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.hotOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 30, 10"
+								);	
+								
+								
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coldOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 25, 10"
+								);
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.coolOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 35, 10"
+								);	
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.warmOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 100, 60"
+								);								
+		Oven.setFieldEvaluator("temperature",
+								fuzzy.domains.TemperatureDomain.hotOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 200, 100"
+								);	
+								
+		Room.setFieldEvaluator("humidity",
+								fuzzy.domains.HumidityDomain.lowOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0, 0.5"
+								);					
+		Room.setFieldEvaluator("humidity",
+								fuzzy.domains.HumidityDomain.mediumOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0.5, 0.5"
+								);
+		Room.setFieldEvaluator("humidity",
+								fuzzy.domains.HumidityDomain.highOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 1, 0.5"
+								);
+								
+		Fan.setFieldEvaluator("speed",
+								fuzzy.domains.SpeedDomain.stopOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 0, 10"
+								);
+		Fan.setFieldEvaluator("speed",
+								fuzzy.domains.SpeedDomain.slowOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 10, 10"
+								);
+		Fan.setFieldEvaluator("speed",
+								fuzzy.domains.SpeedDomain.fastOp.getOperatorString(),
+								false,
+								"evaluators.membership.TriangleMembership, 20, 10"
+								);
+							
+		
+end		
+
+
+
+
+
+
+
+rule "DoubleHot"
+	when
+		$r : Room( temperature `seems[] hot )				
+		$o : Oven( temperature `seems[] hot )
+	then
+		System.out.println("Heat with different meanings " + drools.getActivationDegree());
+		
+end
+
+
+rule "Hot_generic"
+	when
+		$r : Room( temperature `hot[evaluators.membership.TriangleMembership, 30, 10] 1)
+	then
+		System.out.println("Hot works as op itself " + drools.getActivationDegree());
+end
+
+
+rule "Hot"
+	when 
+		$r: Room( temperature `seems[] hot ,
+				  humidity `seems[] medium )
+	then
+		System.out.println("Room is hot at degree " + drools.getActivationDegree());
+		
+		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
+			priors.put(new ConstraintSignature("speed","seems","fast"), drools.getActivationDegree());
+			
+		insertLogical(new Fan(),priors);
+		
+end	
+
+
+/*
 rule "Cold"
 	when 
 		$r: Room( 
-				  temperature `cold[evaluators.membership.TriangleMembership, 0, 10] 1 ,
-				  humidity `low[evaluators.membership.TriangleMembership, 0, 0.5] 1 
+				  temperature `seems[] cold ,
+				  humidity `seems[] low 
 				)		
 	then
 		System.out.println("Room is cold at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","stop","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","stop"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
 end
 
 
+
 rule "Cool"
 	when 
-		$r: Room( temperature `cool[evaluators.membership.TriangleMembership, 10, 10] 1 ,
-				  humidity `medium[evaluators.membership.TriangleMembership, 0.5, 0.5] 1 )
+		$r: Room( temperature `seems[] cool ,
+				  humidity `seems[] medium )
 	then
 		System.out.println("Room is cool at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","stop","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","stop"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
@@ -54,29 +187,31 @@
 
 rule "Warm"
 	when 
-		$r: Room( temperature `warm[evaluators.membership.TriangleMembership, 20, 10] 1 ,
-				  humidity `medium[evaluators.membership.TriangleMembership, 1, 0.5] 1 )
+		$r: Room( temperature `seems[] warm ,
+				  humidity `seems[] medium )
 	then
 		System.out.println("Room is warm at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","slow","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","slow"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
 end
 	
+
+
 	
 	
-rule "Hot"
+rule "Hotter"
 	when 
-		$r: Room( temperature `hot[evaluators.membership.TriangleMembership, 30, 10] 1 ,
-				  humidity `high[evaluators.membership.TriangleMembership, 1, 0.5] 1 )
+		$r: Room( temperature `seems[] hot ,
+				  humidity `seems[] high )
 	then
-		System.out.println("Room is hot at degree " + drools.getActivationDegree());
+		System.out.println("Room is hotter at degree " + drools.getActivationDegree());
 		
 		Hashtable<ConstraintSignature,IUncertainDegree> priors = new Hashtable<ConstraintSignature, IUncertainDegree>();
-			priors.put(new ConstraintSignature("speed","fast","1"), drools.getActivationDegree());
+			priors.put(new ConstraintSignature("speed","seems","fast"), drools.getActivationDegree());
 			
 		insertLogical(new Fan(),priors);
 		
@@ -88,27 +223,30 @@
 
 rule "Fan Stop"
 	when
-		$f : Fan( speed `stop[evaluators.membership.TriangleMembership, 0, 10] 1)
+		$f : Fan( speed `seems[] stop)
 	then
 		System.out.println("Stop fan" + drools.getActivationDegree());	
-		$f.setSpeedInfo("stop","evaluators.membership.TriangleMembership, 0, 10",drools.getActivationDegree());
+		$f.setSpeedInfo("stop",drools.getActivationDegree());
 end
 
 
 rule "Fan Slow"
 	when
-		$f : Fan( speed `slow[evaluators.membership.TriangleMembership, 10, 10] 1)
+		$f : Fan( speed `seems[] slow)
 	then
 		System.out.println("Slow fan" + drools.getActivationDegree());	
-		$f.setSpeedInfo("slow","evaluators.membership.TriangleMembership, 10, 10",drools.getActivationDegree());
+		$f.setSpeedInfo("slow",drools.getActivationDegree());
+		
 end
 
+
+
 rule "Fan Fast"
 	when
-		$f : Fan( speed `fast[evaluators.membership.TriangleMembership, 20, 10] 1)
+		$f : Fan( speed `seems[] fast)
 	then
-		System.out.println("Fast fan" + drools.getActivationDegree());	
-		$f.setSpeedInfo("fast","evaluators.membership.TriangleMembership, 20, 10",drools.getActivationDegree());
+		System.out.println("Fast fan" + drools.getActivationDegree());
+		$f.setSpeedInfo("fast",drools.getActivationDegree());			
 end
 
 
@@ -116,9 +254,9 @@
 
 
 rule "Act"
-	when
-		Act()
+	when		
 		$f : Fan()
 	then
 		System.out.println("Fan activated at speed " + $f.getSpeed());	
 end
+*/
\ No newline at end of file

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/oldFaithful.drl
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/oldFaithful.drl	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy/oldFaithful.drl	2008-08-29 18:04:09 UTC (rev 22242)
@@ -35,9 +35,9 @@
 		//System.out.println("Rule 2 fired for " + $s + " at deg " + drools.getActivationDegree());
 		$s.setEpsilon2(drools.getActivationDegree().getDegree().getValue());
 end
+
 */
 
-
 rule "Class1_clust"
 	when
 		$s : Sample2 (	this `classify[] 0 )

Modified: labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy.packagebuilder.conf
===================================================================
--- labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy.packagebuilder.conf	2008-08-29 16:59:40 UTC (rev 22241)
+++ labs/jbossrules/branches/uncDrools5x/Fuzzy Test/src/fuzzy.packagebuilder.conf	2008-08-29 18:04:09 UTC (rev 22242)
@@ -31,20 +31,13 @@
 drools.evaluator.matches = org.drools.base.evaluators.MatchesEvaluatorsDefinition
 drools.evaluator.soundslike = org.drools.base.evaluators.SoundslikeEvaluatorsDefinition
 
-drools.evaluator.cold = evaluators.TemperatureEvaluatorDefinition
-drools.evaluator.cool = evaluators.TemperatureEvaluatorDefinition
-drools.evaluator.warm = evaluators.TemperatureEvaluatorDefinition
-drools.evaluator.hot = evaluators.TemperatureEvaluatorDefinition
 
-drools.evaluator.low = evaluators.HumidityEvaluatorDefinition
-drools.evaluator.medium = evaluators.HumidityEvaluatorDefinition
-drools.evaluator.high = evaluators.HumidityEvaluatorDefinition
 
-drools.evaluator.slow = evaluators.SpeedEvaluatorDefinition
-drools.evaluator.stop = evaluators.SpeedEvaluatorDefinition
-drools.evaluator.fast = evaluators.SpeedEvaluatorDefinition
-
 drools.evaluator.classify = evaluators.FakeSubSymbEvaluatorDefinition
 
+drools.evaluator.seems = evaluators.SeemsEvaluatorDefinition
+drools.evaluator.hot = evaluators.TemperatureEvaluatorDefinition
 
 
+
+




More information about the jboss-svn-commits mailing list