[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