[jboss-svn-commits] JBL Code SVN: r28959 - in labs/jbossrules/trunk/drools-solver: drools-solver-core/src/main/java/org/drools/solver/core and 11 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 17 09:32:37 EDT 2009
Author: ge0ffrey
Date: 2009-08-17 09:32:37 -0400 (Mon, 17 Aug 2009)
New Revision: 28959
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolverScope.java
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/solution/Solution.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/CurriculumCourseSchedule.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/Examination.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/domain/LessonSchedule.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/manners2009/domain/Manners2009.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/domain/NQueens.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/pas/domain/PatientAdmissionSchedule.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/domain/TravelingTournament.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/test/java/org/drools/solver/examples/nqueens/NQueensSmokeTest.java
labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt
Log:
JBRULES-1977 Solution should have a getScore() and setScore()
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/benchmark/SolverBenchmarkSuite.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -152,8 +152,8 @@
solver.setStartingSolution(unsolvedSolution);
solver.solve();
result.setTimeMillesSpend(solver.getTimeMillisSpend());
- result.setScore(solver.getBestScore());
Solution solvedSolution = solver.getBestSolution();
+ result.setScore(solvedSolution.getScore());
writeSolvedSolution(xStream, solverBenchmark, result, solvedSolution);
}
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/Solver.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -14,11 +14,9 @@
public interface Solver {
/**
- * @param startingSolution cannot be null
+ * @param startingSolution never null
*/
void setStartingSolution(Solution startingSolution);
-
- Score getBestScore();
Solution getBestSolution();
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/DefaultLocalSearchSolver.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -77,10 +77,6 @@
localSearchSolverScope.setWorkingSolution(startingSolution);
}
- public Score getBestScore() {
- return this.localSearchSolverScope.getBestScore();
- }
-
public Solution getBestSolution() {
return this.localSearchSolverScope.getBestSolution();
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolverScope.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolverScope.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/LocalSearchSolverScope.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -134,7 +134,9 @@
public Score calculateScoreFromWorkingMemory() {
workingMemory.fireAllRules();
- return workingScoreCalculator.calculateScore();
+ Score score = workingScoreCalculator.calculateScore();
+ workingSolution.setScore(score);
+ return score;
}
public void resetTimeMillisSpend() {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/solution/Solution.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/solution/Solution.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/solution/Solution.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -2,6 +2,9 @@
import java.util.Collection;
+import org.drools.solver.core.score.Score;
+import org.drools.solver.core.Solver;
+
/**
* A Solution represents a problem and a possible solution of that problem.
* A possible solution does not need to optimal or even feasible.
@@ -15,16 +18,31 @@
public interface Solution {
/**
- * Called when the solution needs to be asserted into an empty WorkingMemory.
+ * Returns the Score of this Solution.
+ * @return null if the Solution is unitialized
+ * or the last calculated Score is dirty the new Score has not yet been recalculated
+ */
+ Score getScore();
+
+ /**
+ * Called by the {@link Solver} when the Score of this Solution has been calculated.
+ * @param score null if the Solution has changed and the new Score has not yet been recalculated
+ */
+ void setScore(Score score);
+
+ /**
+ * Called by the {@link Solver} when the solution needs to be asserted into an empty WorkingMemory.
* These facts can be used by the score rules.
- * @return all the facts of this solution
+ * @return never null (although an empty collection is allowed), all the facts of this solution
*/
Collection<? extends Object> getFacts();
/**
- * Called when the solution needs to be cloned during solving,
- * for example to store a clone of the current solution as the best solution.
- * @return a clone of which the properties that change during solving are deep cloned
+ * Called by the {@link Solver} when the solution needs to be cloned,
+ * for example to store a clone of the current solution as the best solution.
+ * <p/>
+ * A clone must also shallow copy the score.
+ * @return never null, a clone of which the properties that change during solving are deep cloned
*/
Solution cloneSolution();
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/CurriculumCourseSchedule.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/CurriculumCourseSchedule.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/curriculumcourse/domain/CurriculumCourseSchedule.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -7,6 +7,8 @@
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.drools.solver.core.solution.Solution;
+import org.drools.solver.core.score.Score;
+import org.drools.solver.core.score.HardAndSoftScore;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
@@ -28,6 +30,8 @@
private List<Lecture> lectureList;
+ private HardAndSoftScore score;
+
public String getName() {
return name;
}
@@ -108,7 +112,15 @@
this.lectureList = lectureList;
}
+ public HardAndSoftScore getScore() {
+ return score;
+ }
+ public void setScore(Score score) {
+ this.score = (HardAndSoftScore) score;
+ }
+
+
public boolean isInitialized() {
return (lectureList != null);
}
@@ -151,6 +163,7 @@
clonedLectureList.add(clonedLecture);
}
clone.lectureList = clonedLectureList;
+ clone.score = score;
return clone;
}
@@ -186,4 +199,4 @@
return hashCodeBuilder.toHashCode();
}
-}
\ No newline at end of file
+}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/Examination.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/Examination.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/Examination.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -7,6 +7,8 @@
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.drools.solver.core.solution.Solution;
+import org.drools.solver.core.score.HardAndSoftScore;
+import org.drools.solver.core.score.Score;
import org.drools.solver.examples.common.domain.AbstractPersistable;
import org.drools.solver.examples.itc2007.examination.domain.solver.TopicConflict;
@@ -27,6 +29,8 @@
private List<Exam> examList;
+ private HardAndSoftScore score;
+
public InstitutionalWeighting getInstitutionalWeighting() {
return institutionalWeighting;
}
@@ -91,7 +95,15 @@
this.examList = examList;
}
+ public HardAndSoftScore getScore() {
+ return score;
+ }
+ public void setScore(Score score) {
+ this.score = (HardAndSoftScore) score;
+ }
+
+
public boolean isInitialized() {
return (examList != null);
}
@@ -156,6 +168,7 @@
clonedExamList.add(clonedExam);
}
clone.examList = clonedExamList;
+ clone.score = score;
return clone;
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/domain/LessonSchedule.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/domain/LessonSchedule.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/domain/LessonSchedule.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -5,6 +5,8 @@
import java.util.List;
import org.drools.solver.core.solution.Solution;
+import org.drools.solver.core.score.Score;
+import org.drools.solver.core.score.HardAndSoftScore;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
@@ -18,6 +20,8 @@
private List<Lesson> lessonList;
+ private HardAndSoftScore score;
+
public List<Timeslot> getTimeslotList() {
return timeslotList;
}
@@ -50,7 +54,15 @@
this.lessonList = lessonList;
}
+ public HardAndSoftScore getScore() {
+ return score;
+ }
+ public void setScore(Score score) {
+ this.score = (HardAndSoftScore) score;
+ }
+
+
public Collection<? extends Object> getFacts() {
List<Object> facts = new ArrayList<Object>();
facts.addAll(timeslotList);
@@ -74,6 +86,7 @@
clonedLessonList.add(lesson.clone());
}
clone.lessonList = clonedLessonList;
+ clone.score = score;
return clone;
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/manners2009/domain/Manners2009.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/manners2009/domain/Manners2009.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/manners2009/domain/Manners2009.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -8,6 +8,8 @@
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.drools.solver.core.solution.Solution;
+import org.drools.solver.core.score.Score;
+import org.drools.solver.core.score.SimpleScore;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
@@ -23,6 +25,8 @@
private List<SeatDesignation> seatDesignationList;
+ private SimpleScore score;
+
public List<Job> getJobList() {
return jobList;
}
@@ -71,7 +75,15 @@
this.seatDesignationList = seatDesignationList;
}
+ public SimpleScore getScore() {
+ return score;
+ }
+ public void setScore(Score score) {
+ this.score = (SimpleScore) score;
+ }
+
+
public boolean isInitialized() {
return (seatDesignationList != null);
}
@@ -107,6 +119,7 @@
clonedSeatDesignationList.add(seatDesignation.clone());
}
clone.seatDesignationList = clonedSeatDesignationList;
+ clone.score = score;
return clone;
}
@@ -142,4 +155,4 @@
return hashCodeBuilder.toHashCode();
}
-}
\ No newline at end of file
+}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/domain/NQueens.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/domain/NQueens.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/domain/NQueens.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -5,6 +5,9 @@
import java.util.List;
import org.drools.solver.core.solution.Solution;
+import org.drools.solver.core.score.Score;
+import org.drools.solver.core.score.HardAndSoftScore;
+import org.drools.solver.core.score.SimpleScore;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
@@ -14,6 +17,8 @@
private List<Queen> queenList;
+ private SimpleScore score;
+
public List<Queen> getQueenList() {
return queenList;
}
@@ -22,6 +27,14 @@
this.queenList = queenList;
}
+ public SimpleScore getScore() {
+ return score;
+ }
+
+ public void setScore(Score score) {
+ this.score = (SimpleScore) score;
+ }
+
public int getN() {
return queenList.size();
}
@@ -54,6 +67,7 @@
clonedQueenList.add(queen.clone());
}
clone.queenList = clonedQueenList;
+ clone.score = score;
return clone;
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/pas/domain/PatientAdmissionSchedule.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/pas/domain/PatientAdmissionSchedule.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/pas/domain/PatientAdmissionSchedule.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -7,6 +7,8 @@
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.drools.solver.core.solution.Solution;
+import org.drools.solver.core.score.Score;
+import org.drools.solver.core.score.HardAndSoftScore;
import org.drools.solver.examples.common.domain.AbstractPersistable;
import org.drools.solver.examples.pas.domain.solver.AdmissionPartConflict;
@@ -31,6 +33,8 @@
private List<BedDesignation> bedDesignationList;
+ private HardAndSoftScore score;
+
public List<Specialism> getSpecialismList() {
return specialismList;
}
@@ -143,6 +147,15 @@
this.bedDesignationList = bedDesignationList;
}
+ public HardAndSoftScore getScore() {
+ return score;
+ }
+
+ public void setScore(Score score) {
+ this.score = (HardAndSoftScore) score;
+ }
+
+
public boolean isInitialized() {
return (bedDesignationList != null);
}
@@ -234,6 +247,7 @@
clonedBedDesignationList.add(clonedBedDesignation);
}
clone.bedDesignationList = clonedBedDesignationList;
+ clone.score = score;
return clone;
}
@@ -269,4 +283,4 @@
return hashCodeBuilder.toHashCode();
}
-}
\ No newline at end of file
+}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/domain/TravelingTournament.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/domain/TravelingTournament.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/domain/TravelingTournament.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -7,6 +7,8 @@
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.drools.solver.core.solution.Solution;
+import org.drools.solver.core.score.Score;
+import org.drools.solver.core.score.HardAndSoftScore;
import org.drools.solver.examples.common.domain.AbstractPersistable;
/**
@@ -19,6 +21,8 @@
private List<Match> matchList;
+ private HardAndSoftScore score;
+
public List<Day> getDayList() {
return dayList;
}
@@ -43,6 +47,14 @@
this.matchList = matchSets;
}
+ public HardAndSoftScore getScore() {
+ return score;
+ }
+
+ public void setScore(Score score) {
+ this.score = (HardAndSoftScore) score;
+ }
+
public int getN() {
return teamList.size();
}
@@ -69,6 +81,7 @@
clonedMatchList.add(match.clone());
}
clone.matchList = clonedMatchList;
+ clone.score = score;
return clone;
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/test/java/org/drools/solver/examples/nqueens/NQueensSmokeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/test/java/org/drools/solver/examples/nqueens/NQueensSmokeTest.java 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/test/java/org/drools/solver/examples/nqueens/NQueensSmokeTest.java 2009-08-17 13:32:37 UTC (rev 28959)
@@ -30,7 +30,7 @@
solver.solve();
Solution bestSolution = solver.getBestSolution();
assertNotNull(bestSolution);
- Score bestScore = solver.getBestScore();
+ Score bestScore = solver.getBestSolution().getScore();
assertEquals(DefaultSimpleScore.valueOf(0), bestScore);
}
Modified: labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt
===================================================================
--- labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt 2009-08-17 11:54:57 UTC (rev 28958)
+++ labs/jbossrules/trunk/drools-solver/src/main/assembly/docs/UpgradeFromPreviousVersionRecipe.txt 2009-08-17 13:32:37 UTC (rev 28959)
@@ -131,3 +131,57 @@
<termination>
<scoreAttained>...</scoreAttained>
</termination>
+
+
+The interface Solution now has a Score property: Solution.getScore() and Solution.getScore()
+Before:
+ public class ... implements Solution {
+ ...
+ }
+After if you use a SimpleScore:
+ public class ... implements Solution {
+ ...
+ private SimpleScore score;
+ ...
+ public SimpleScore getScore() {
+ return score;
+ }
+ public void setScore(Score score) {
+ this.score = (SimpleScore) score;
+ }
+ ...
+ }
+After if you use a HardAndSoftScore:
+ public class ... implements Solution {
+ ...
+ private HardAndSoftScore score;
+ ...
+ public HardAndSoftScore getScore() {
+ return score;
+ }
+ public void setScore(Score score) {
+ this.score = (HardAndSoftScore) score;
+ }
+ ...
+ }
+
+The score property of a Solution needs to be cloned:
+Before:
+ public X cloneSolution() {
+ X clone = new X();
+ ...
+ return clone;
+ }
+After:
+ public X cloneSolution() {
+ X clone = new X();
+ ...
+ clone.score = score;
+ return clone;
+ }
+
+The Solver interface no longer has a method Solver.getBestScore().
+Before:
+ solver.getBestScore()
+After:
+ solver.getBestSolution().getScore()
\ No newline at end of file
More information about the jboss-svn-commits
mailing list