[jboss-svn-commits] JBL Code SVN: r19231 - in labs/jbossrules/contrib/machinelearning/dt_examples: src and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 25 22:02:22 EDT 2008


Author: gizil
Date: 2008-03-25 22:02:21 -0400 (Tue, 25 Mar 2008)
New Revision: 19231

Added:
   labs/jbossrules/contrib/machinelearning/dt_examples/src/
   labs/jbossrules/contrib/machinelearning/dt_examples/src/java/
   labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/
   labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/Restaurant.java
   labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/RestaurantExample.java
   labs/jbossrules/contrib/machinelearning/dt_examples/src/rules/
   labs/jbossrules/contrib/machinelearning/dt_examples/src/rules/examples/
   labs/jbossrules/contrib/machinelearning/dt_examples/src/rules/examples/restaurants.drl
Log:
the rules for the Restaurant objects

Added: labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/Restaurant.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/Restaurant.java	                        (rev 0)
+++ labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/Restaurant.java	2008-03-26 02:02:21 UTC (rev 19231)
@@ -0,0 +1,146 @@
+package examples;
+
+public class Restaurant {
+	
+
+	private boolean alternate; 	//yesno
+	private boolean bar; 		//yesno
+	private boolean fri_sat ;	//yesno
+	private boolean hungry; 		//yesno
+	private String patrons; 	//String[]{"None","Some","Full"});
+	private int price; 		//",new String[]{"$","$$","$$$"});
+	private boolean raining; 	//yesno
+	private boolean reservation; //yesno
+	private String type; 		//",new String[]{"French","Italian","Thai","Burger"});
+	private String wait_estimate;	//",new String[]{"0-10","10-30","30-60",">60"});
+	private boolean will_wait; 	//yesno
+	
+	
+	public Restaurant (boolean alt, boolean b, boolean f_s, boolean hung, String pat, int pri, 
+				boolean rain, boolean reserv, String t, String wait, boolean will) {
+		alternate = alt; 		//yesno
+		bar = b; 				//yesno
+		fri_sat = f_s;			//yesno
+		hungry = hung; 			//yesno
+		patrons = pat; 			//",new String[]{"None","Some","Full"});
+		price = pri; 			//",new String[]{"$","$$","$$$"});
+		raining = rain; 		//yesno
+		reservation = reserv; 	//yesno
+		type = t; 				//",new String[]{"French","Italian","Thai","Burger"});
+		wait_estimate = wait; 	//",new String[]{"0-10","10-30","30-60",">60"});
+		will_wait = will; 		//yesno
+	}
+
+
+	public boolean getAlternate() {
+		return alternate;
+	}
+
+
+	public void setAlternate(boolean alternate) {
+		this.alternate = alternate;
+	}
+
+
+	public boolean getBar() {
+		return bar;
+	}
+
+
+	public void setBar(boolean bar) {
+		this.bar = bar;
+	}
+
+
+	public boolean getFri_sat() {
+		return fri_sat;
+	}
+
+
+	public void setFri_sat(boolean fri_sat) {
+		this.fri_sat = fri_sat;
+	}
+
+
+	public boolean getHungry() {
+		return hungry;
+	}
+
+
+	public void setHungry(boolean hungry) {
+		this.hungry = hungry;
+	}
+
+
+	public String getPatrons() {
+		return patrons;
+	}
+
+
+	public void setPatrons(String patrons) {
+		this.patrons = patrons;
+	}
+
+
+	public int getPrice() {
+		return price;
+	}
+
+
+	public void setPrice(int price) {
+		this.price = price;
+	}
+
+
+	public boolean getRaining() {
+		return raining;
+	}
+
+
+	public void setRaining(boolean raining) {
+		this.raining = raining;
+	}
+
+
+	public boolean getReservation() {
+		return reservation;
+	}
+
+
+	public void setReservation(boolean reservation) {
+		this.reservation = reservation;
+	}
+
+
+	public String getType() {
+		return type;
+	}
+
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+
+	public String getWait_estimate() {
+		return wait_estimate;
+	}
+
+
+	public void setWait_estimate(String wait_estimate) {
+		this.wait_estimate = wait_estimate;
+	}
+
+
+	public boolean getWill_wait() {
+		return will_wait;
+	}
+
+
+	public void setWill_wait(boolean will_wait) {
+		this.will_wait = will_wait;
+	}
+	
+	
+
+}

Added: labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/RestaurantExample.java
===================================================================
--- labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/RestaurantExample.java	                        (rev 0)
+++ labs/jbossrules/contrib/machinelearning/dt_examples/src/java/examples/RestaurantExample.java	2008-03-26 02:02:21 UTC (rev 19231)
@@ -0,0 +1,111 @@
+package examples;
+
+import id3.DecisionTree;
+import id3.DecisionTreeBuilder;
+import id3.RulePrinter;
+import id3.WorkingMemory;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.ArrayList;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+
+public class RestaurantExample {
+	public static final void main(final String[] args) throws Exception {
+
+		//int action = 1; /* create the drl */
+		int action = 2; /* parse the drl */
+
+		String drlFile = new String("restaurants"+".drl");
+		switch (action) {
+		case 1:
+			produceRestaurants(drlFile);
+			
+			break;
+		case 2:
+
+			//read in the source
+			final Reader source = new InputStreamReader(Restaurant.class
+					.getResourceAsStream(drlFile));
+
+			final PackageBuilder builder = new PackageBuilder();
+
+			//this will parse and compile in one step
+			builder.addPackageFromDrl(source);
+
+			// Check the builder for errors
+			if (builder.hasErrors()) {
+				System.out.println(builder.getErrors().toString());
+				throw new RuntimeException(
+						"Unable to compile \""+drlFile+"\".");
+			}
+			//get the compiled package (which is serializable)
+			final Package pkg = builder.getPackage();
+
+			//add the package to a rulebase (deploy the rule package).
+			final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+			ruleBase.addPackage(pkg);
+			break;
+			
+
+			
+
+		}
+
+	}
+
+	public static void produceRestaurants(String file) {
+
+		Restaurant arest = new Restaurant(true, false, false, true, "Full", 1,
+				false, false, "Thai", "30-60", false);
+		Class<?> k = arest.getClass();
+		ArrayList<Object> facts = new ArrayList<Object>();
+		facts.add(new Restaurant(true, false, false, true, "Full", 1, false,
+				false, "Thai", "30-60", false));
+		facts.add(new Restaurant(false, true, false, false, "Some", 1, false,
+				false, "Burger", "0-10", true));
+		facts.add(new Restaurant(true, false, true, true, "Full", 1, true,
+				false, "Thai", "10-30", true));
+		facts.add(new Restaurant(true, false, true, false, "Full", 3, false,
+				true, "French", ">60", false));
+		facts.add(new Restaurant(false, true, false, true, "Some", 2, true,
+				true, "Italian", "0-10", true));
+		facts.add(new Restaurant(false, true, false, false, "None", 1, true,
+				false, "Burger", "0-10", false));
+		facts.add(new Restaurant(false, false, false, true, "Some", 2, true,
+				true, "Thai", "0-10", true));
+		facts.add(new Restaurant(false, true, true, false, "Full", 1, true,
+				false, "Burger", ">60", false));
+		facts.add(new Restaurant(true, true, true, true, "Full", 3, false,
+				true, "Italian", "10-30", false));
+		facts.add(new Restaurant(false, false, false, false, "None", 1, false,
+				false, "Thai", "0-10", false));
+		facts.add(new Restaurant(true, true, true, true, "Full", 1, false,
+				false, "Burger", "30-60", true));
+
+		WorkingMemory simple = new WorkingMemory();
+
+		for (Object r : facts) {
+			try {
+				simple.insert(r);
+
+			} catch (Exception e) {
+				System.out.println("Inserting element " + r + " and " + e);
+			}
+		}
+
+		DecisionTreeBuilder bocuk = new DecisionTreeBuilder();
+
+		long dt = System.currentTimeMillis();
+		DecisionTree bocuksTree = bocuk.build(simple, k, "will_wait", null);
+		dt = System.currentTimeMillis() - dt;
+		System.out.println("Time" + dt + "\n" + bocuksTree);
+
+		RulePrinter my_printer = new RulePrinter();
+		my_printer.printer(bocuksTree, "examples", "src/rules/examples/"+file);
+	}
+}

Added: labs/jbossrules/contrib/machinelearning/dt_examples/src/rules/examples/restaurants.drl
===================================================================
--- labs/jbossrules/contrib/machinelearning/dt_examples/src/rules/examples/restaurants.drl	                        (rev 0)
+++ labs/jbossrules/contrib/machinelearning/dt_examples/src/rules/examples/restaurants.drl	2008-03-26 02:02:21 UTC (rev 19231)
@@ -0,0 +1,58 @@
+package examples;
+
+rule "#5 will_wait = true with rank:0.0" 
+	 when
+		 examples.Restaurant(patrons == "Full", hungry == true, type == "French", will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (true)");
+end
+
+rule "#1 will_wait = false with rank:0.09090909090909091" 
+	 when
+		 examples.Restaurant(patrons == "Full", hungry == true, type == "Italian", will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (false)");
+end
+
+rule "#2 will_wait = true with rank:0.09090909090909091" 
+	 when
+		 examples.Restaurant(patrons == "Full", hungry == true, type == "Burger", will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (true)");
+end
+
+rule "#3 will_wait = true with rank:0.09090909090909091" 
+	 when
+		 examples.Restaurant(patrons == "Full", hungry == true, type == "Thai", fri_sat == true, will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (true)");
+end
+
+rule "#4 will_wait = false with rank:0.09090909090909091" 
+	 when
+		 examples.Restaurant(patrons == "Full", hungry == true, type == "Thai", fri_sat == false, will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (false)");
+end
+
+rule "#0 will_wait = false with rank:0.18181818181818182" 
+	 when
+		 examples.Restaurant(patrons == "None", will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (false)");
+end
+
+rule "#6 will_wait = false with rank:0.18181818181818182" 
+	 when
+		 examples.Restaurant(patrons == "Full", hungry == false, will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (false)");
+end
+
+rule "#7 will_wait = true with rank:0.2727272727272727" 
+	 when
+		 examples.Restaurant(patrons == "Some", will_wait : will_wait)
+	 then 
+		 System.out.println("Decision on will_wait = "+will_wait +": (true)");
+end
+




More information about the jboss-svn-commits mailing list