[jboss-svn-commits] JBL Code SVN: r17442 - in labs/jbossrules/trunk/drools-solver: drools-solver-examples/src/main/java/org/drools/solver/examples/common/business and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Dec 29 14:33:51 EST 2007


Author: ge0ffrey
Date: 2007-12-29 14:33:51 -0500 (Sat, 29 Dec 2007)
New Revision: 17442

Added:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/UnweightedConstraintOccurrence.java
Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/ConstraintOccurrence.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleScoreRules.drl
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nQueensScoreRules.drl
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentScoreRules.drl
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl
Log:
unweighted constraint occurrence, making constraint occurrence abstract

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/ConstraintOccurrence.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/ConstraintOccurrence.java	2007-12-29 19:16:35 UTC (rev 17441)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/ConstraintOccurrence.java	2007-12-29 19:33:51 UTC (rev 17442)
@@ -6,7 +6,7 @@
 /**
  * @author Geoffrey De Smet
  */
-public class ConstraintOccurrence {
+public abstract class ConstraintOccurrence {
 
     protected String ruleId;
     protected ConstraintType constraintType;

Copied: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/UnweightedConstraintOccurrence.java (from rev 17407, labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/IntConstraintOccurrence.java)
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/UnweightedConstraintOccurrence.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/score/constraint/UnweightedConstraintOccurrence.java	2007-12-29 19:33:51 UTC (rev 17442)
@@ -0,0 +1,16 @@
+package org.drools.solver.core.score.constraint;
+
+/**
+ * @author Geoffrey De Smet
+ */
+public class UnweightedConstraintOccurrence extends ConstraintOccurrence {
+
+    public UnweightedConstraintOccurrence(String ruleId, Object... causes) {
+        this(ruleId, ConstraintType.NEGATIVE_HARD, causes);
+    }
+
+    public UnweightedConstraintOccurrence(String ruleId, ConstraintType constraintType, Object... causes) {
+        super(ruleId, constraintType, causes);
+    }
+
+}
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java	2007-12-29 19:16:35 UTC (rev 17441)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/common/business/SolutionBusiness.java	2007-12-29 19:33:51 UTC (rev 17442)
@@ -17,6 +17,7 @@
 import org.drools.solver.core.score.constraint.ConstraintOccurrence;
 import org.drools.solver.core.score.constraint.DoubleConstraintOccurrence;
 import org.drools.solver.core.score.constraint.IntConstraintOccurrence;
+import org.drools.solver.core.score.constraint.UnweightedConstraintOccurrence;
 import org.drools.solver.core.solution.Solution;
 import org.drools.solver.examples.common.persistence.SolutionDao;
 import org.slf4j.Logger;
@@ -119,8 +120,9 @@
                 occurenceScore = ((IntConstraintOccurrence) occurrence).getWeight();
             } else if (occurrence instanceof DoubleConstraintOccurrence) {
                 occurenceScore = ((DoubleConstraintOccurrence) occurrence).getWeight();
+            } else if (occurrence instanceof UnweightedConstraintOccurrence) {
+                occurenceScore = 1.0;
             } else {
-                // TODO FIXME with unweightedConstraintOccurence
                 throw new IllegalStateException("Cannot determine constraintScore of ConstraintOccurence class: "
                         + occurrence.getClass());
             }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleScoreRules.drl	2007-12-29 19:16:35 UTC (rev 17441)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleScoreRules.drl	2007-12-29 19:33:51 UTC (rev 17442)
@@ -1,7 +1,7 @@
 package rg.drools.solver.examples.lessonschedule.solver;
 
 import org.drools.solver.core.score.calculator.HardAndSoftConstraintScoreCalculator;
-import org.drools.solver.core.score.constraint.ConstraintOccurrence;
+import org.drools.solver.core.score.constraint.UnweightedConstraintOccurrence;
 import org.drools.solver.core.score.constraint.ConstraintType;
 
 import org.drools.solver.examples.lessonschedule.domain.LessonSchedule;
@@ -21,7 +21,7 @@
         $lesson : Lesson($id : id, $teacher : teacher, $timeslot : timeslot);
         exists Lesson(id > $id, teacher == $teacher, timeslot == $timeslot);
     then
-        insertLogical(new ConstraintOccurrence("multipleLessonsPerTeacherPerTimeslot", $lesson));
+        insertLogical(new UnweightedConstraintOccurrence("multipleLessonsPerTeacherPerTimeslot", $lesson));
 end
 
 rule "multipleLessonsPerGroupPerTimeslot"
@@ -29,15 +29,15 @@
         $lesson : Lesson($id : id, $group : group, $timeslot : timeslot);
         exists Lesson(id > $id, group == $group, timeslot == $timeslot);
     then
-        insertLogical(new ConstraintOccurrence("multipleLessonsPerGroupPerTimeslot", $lesson));
+        insertLogical(new UnweightedConstraintOccurrence("multipleLessonsPerGroupPerTimeslot", $lesson));
 end
 
 rule "hardConstraintsBroken"
     when
-        $hardCount : Number() from accumulate(
-            $constraintOccurrence : ConstraintOccurrence(),
-            count($constraintOccurrence)
+        $occurrenceCount : Number() from accumulate(
+            $unweightedConstraintOccurrence : UnweightedConstraintOccurrence(),
+            count($unweightedConstraintOccurrence)
         );
     then
-        scoreCalculator.setHardConstraintsBroken($hardCount.intValue());
+        scoreCalculator.setHardConstraintsBroken($occurrenceCount.intValue());
 end
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nQueensScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nQueensScoreRules.drl	2007-12-29 19:16:35 UTC (rev 17441)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/nqueens/solver/nQueensScoreRules.drl	2007-12-29 19:33:51 UTC (rev 17442)
@@ -1,7 +1,7 @@
 package org.drools.solver.examples.nqueens.solver;
 
 import org.drools.solver.core.score.calculator.SimpleScoreCalculator;
-import org.drools.solver.core.score.constraint.ConstraintOccurrence;
+import org.drools.solver.core.score.constraint.UnweightedConstraintOccurrence;
 import org.drools.solver.core.score.constraint.ConstraintType;
 
 import org.drools.solver.examples.nqueens.domain.Queen;
@@ -17,7 +17,7 @@
         $q1 : Queen($id : id, $y : y);
         $q2 : Queen(id > $id, y == $y);
     then
-        insertLogical(new ConstraintOccurrence("multipleQueensHorizontal", $q1, $q2));
+        insertLogical(new UnweightedConstraintOccurrence("multipleQueensHorizontal", $q1, $q2));
 end
 
 // multipleQueensVertical is obsolete because it is always 0
@@ -27,7 +27,7 @@
         $q1 : Queen($id : id, $ascendingD : ascendingD);
         $q2 : Queen(id > $id, ascendingD == $ascendingD);
     then
-        insertLogical(new ConstraintOccurrence("multipleQueensAscendingDiagonal", $q1, $q2));
+        insertLogical(new UnweightedConstraintOccurrence("multipleQueensAscendingDiagonal", $q1, $q2));
 end
 
 rule "multipleQueensDescendingDiagonal"
@@ -35,21 +35,21 @@
         $q1 : Queen($id : id, $descendingD : descendingD);
         $q2 : Queen(id > $id, descendingD == $descendingD);
     then
-        insertLogical(new ConstraintOccurrence("multipleQueensDescendingDiagonal", $q1, $q2));
+        insertLogical(new UnweightedConstraintOccurrence("multipleQueensDescendingDiagonal", $q1, $q2));
 end
 
-rule "constraintsBroken"
+rule "hardConstraintsBroken"
     when
-        $constraintCount : Number() from accumulate(
-            $constraintOccurrence : ConstraintOccurrence(),
-            count($constraintOccurrence)
+        $occurrenceCount : Number() from accumulate(
+            $unweightedConstraintOccurrence : UnweightedConstraintOccurrence(),
+            count($unweightedConstraintOccurrence)
         );
     then
-        scoreCalculator.setScore(- $constraintCount.intValue());
+        scoreCalculator.setScore(- $occurrenceCount.intValue());
 end
 
 // Don't do this. It breaks performance and scalability!
-//rule "constraintsBroken"
+//rule "hardConstraintsBroken"
 //    when
 //        $multipleQueensHorizontal : Number()
 //        from accumulate(

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentScoreRules.drl	2007-12-29 19:16:35 UTC (rev 17441)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentScoreRules.drl	2007-12-29 19:33:51 UTC (rev 17442)
@@ -2,7 +2,7 @@
     dialect "java"
 
 import org.drools.solver.core.score.calculator.HardAndSoftConstraintScoreCalculator;
-import org.drools.solver.core.score.constraint.ConstraintOccurrence;
+import org.drools.solver.core.score.constraint.UnweightedConstraintOccurrence;
 import org.drools.solver.core.score.constraint.ConstraintType;
 
 import org.drools.solver.examples.travelingtournament.domain.Match;
@@ -25,7 +25,7 @@
         exists Match( id > $id, homeTeam == $team, day == $day )
                 || exists Match(id > $id, awayTeam == $team, day == $day );
     then
-        insertLogical(new ConstraintOccurrence("multipleMatchesPerTeamPerDay", $m));
+        insertLogical(new UnweightedConstraintOccurrence("multipleMatchesPerTeamPerDay", $m));
 end
 
 rule "fourConsecutiveHomeMatches"
@@ -35,7 +35,7 @@
         Match(homeTeam == $homeTeam, eval(day.getIndex() == $day1.getIndex() + 2));
         Match(homeTeam == $homeTeam, eval(day.getIndex() == $day1.getIndex() + 3));
     then
-        insertLogical(new ConstraintOccurrence("fourConsecutiveHomeMatches", $m));
+        insertLogical(new UnweightedConstraintOccurrence("fourConsecutiveHomeMatches", $m));
 end
 
 rule "fourConsecutiveAwayMatches"
@@ -45,7 +45,7 @@
         Match(awayTeam == $awayTeam, eval(day.getIndex() == $day1.getIndex() + 2));
         Match(awayTeam == $awayTeam, eval(day.getIndex() == $day1.getIndex() + 3));
     then
-        insertLogical(new ConstraintOccurrence("fourConsecutiveAwayMatches", $m));
+        insertLogical(new UnweightedConstraintOccurrence("fourConsecutiveAwayMatches", $m));
 end
 
 rule "matchRepeater"
@@ -53,18 +53,18 @@
         $m : Match($homeTeam : homeTeam, $awayTeam : awayTeam, $day1 : day);
         Match(homeTeam == $awayTeam, awayTeam == $homeTeam, eval(day.getIndex() == $day1.getIndex() + 1));
     then
-        insertLogical(new ConstraintOccurrence("matchRepeater", $m));
+        insertLogical(new UnweightedConstraintOccurrence("matchRepeater", $m));
 end
 
 rule "hardConstraintsBroken"
         salience -1 // Finish the other rules first (optional, for performance)
     when
-        $hardCount : Number() from accumulate(
-            $constraintOccurrence : ConstraintOccurrence(),
-            count($constraintOccurrence)
+        $occurrenceCount : Number() from accumulate(
+            $unweightedConstraintOccurrence : UnweightedConstraintOccurrence(),
+            count($unweightedConstraintOccurrence)
         );
     then
-        scoreCalculator.setHardConstraintsBroken($hardCount.intValue());
+        scoreCalculator.setHardConstraintsBroken($occurrenceCount.intValue());
 end
 
 // ############################################################################

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl	2007-12-29 19:16:35 UTC (rev 17441)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl	2007-12-29 19:33:51 UTC (rev 17442)
@@ -2,7 +2,7 @@
     dialect "java"
 
 import org.drools.solver.core.score.calculator.HardAndSoftConstraintScoreCalculator;
-import org.drools.solver.core.score.constraint.ConstraintOccurrence;
+import org.drools.solver.core.score.constraint.UnweightedConstraintOccurrence;
 import org.drools.solver.core.score.constraint.ConstraintType;
 
 import org.drools.solver.examples.travelingtournament.domain.Match;
@@ -26,7 +26,7 @@
     Match(homeTeam == $homeTeam, eval(day.getIndex() == $day1.getIndex() + 2));
     Match(homeTeam == $homeTeam, eval(day.getIndex() == $day1.getIndex() + 3));
   then
-    insertLogical(new ConstraintOccurrence("fourConsecutiveHomeMatches", $m));
+    insertLogical(new UnweightedConstraintOccurrence("fourConsecutiveHomeMatches", $m));
 end
 
 rule "fourConsecutiveAwayMatches"
@@ -36,7 +36,7 @@
     Match(awayTeam == $awayTeam, eval(day.getIndex() == $day1.getIndex() + 2));
     Match(awayTeam == $awayTeam, eval(day.getIndex() == $day1.getIndex() + 3));
   then
-    insertLogical(new ConstraintOccurrence("fourConsecutiveAwayMatches", $m));
+    insertLogical(new UnweightedConstraintOccurrence("fourConsecutiveAwayMatches", $m));
 end
 
 rule "matchRepeater"
@@ -44,18 +44,18 @@
     $m : Match($homeTeam : homeTeam, $awayTeam : awayTeam, $day1 : day);
     Match(homeTeam == $awayTeam, awayTeam == $homeTeam, eval(day.getIndex() == $day1.getIndex() + 1));
   then
-    insertLogical(new ConstraintOccurrence("matchRepeater", $m));
+    insertLogical(new UnweightedConstraintOccurrence("matchRepeater", $m));
 end
 
 rule "hardConstraintsBroken"
         salience -1 // Finish the other rules first (optional, for performance)
     when
-        $hardCount : Number() from accumulate(
-            $constraintOccurrence : ConstraintOccurrence(),
-            count($constraintOccurrence)
+        $occurrenceCount : Number() from accumulate(
+            $unweightedConstraintOccurrence : UnweightedConstraintOccurrence(),
+            count($unweightedConstraintOccurrence)
         );
     then
-        scoreCalculator.setHardConstraintsBroken($hardCount.intValue());
+        scoreCalculator.setHardConstraintsBroken($occurrenceCount.intValue());
 end
 
 // ############################################################################




More information about the jboss-svn-commits mailing list