[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