[jboss-svn-commits] JBL Code SVN: r18571 - in labs/jbossrules/trunk/drools-solver: drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain and 6 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Sun Feb 24 08:04:38 EST 2008
Author: ge0ffrey
Date: 2008-02-24 08:04:38 -0500 (Sun, 24 Feb 2008)
New Revision: 18571
Modified:
labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/LocalSearchSolverConfig.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/PeriodHardConstraintType.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExaminationMoveHelper.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/solution/initializer/ExaminationStartingSolutionInitializer.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java
labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java
Log:
disable shadow facts
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/LocalSearchSolverConfig.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/LocalSearchSolverConfig.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/config/localsearch/LocalSearchSolverConfig.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -9,6 +9,7 @@
import com.thoughtworks.xstream.annotations.XStreamImplicit;
import org.apache.commons.io.IOUtils;
import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
@@ -167,7 +168,9 @@
IOUtils.closeQuietly(scoreDrlIn);
}
}
- RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+ RuleBaseConfiguration ruleBaseConfiguration = new RuleBaseConfiguration();
+ ruleBaseConfiguration.setShadowProxy(false); // TODO remove me when shadow facts are removed in drools 5
+ RuleBase ruleBase = RuleBaseFactory.newRuleBase(ruleBaseConfiguration);
try {
ruleBase.addPackage(packageBuilder.getPackage());
} catch (Exception e) { // TODO remove me if removed in drools 4.0.1
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/PeriodHardConstraintType.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/PeriodHardConstraintType.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/PeriodHardConstraintType.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -4,7 +4,7 @@
* @author Geoffrey De Smet
*/
public enum PeriodHardConstraintType {
- EXAM_COINCIDENCE,
+ EXAM_COINCIDENCE, // TODO rename to coincidence?
EXCLUSION,
AFTER
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExaminationMoveHelper.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExaminationMoveHelper.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/move/ExaminationMoveHelper.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -1,5 +1,6 @@
package org.drools.solver.examples.itc2007.examination.solver.move;
+import org.drools.FactHandle;
import org.drools.WorkingMemory;
import org.drools.solver.examples.itc2007.examination.domain.Exam;
import org.drools.solver.examples.itc2007.examination.domain.Period;
@@ -11,20 +12,26 @@
public class ExaminationMoveHelper {
public static void movePeriod(WorkingMemory workingMemory, Exam exam, Period period) {
+ FactHandle factHandle = workingMemory.getFactHandle(exam);
+ workingMemory.modifyRetract(factHandle);
exam.setPeriod(period);
- workingMemory.update(workingMemory.getFactHandle(exam), exam);
+ workingMemory.modifyInsert(factHandle, exam);
movePeriodCoincidene(workingMemory, exam, period);
}
public static void moveRoom(WorkingMemory workingMemory, Exam exam, Room room) {
+ FactHandle factHandle = workingMemory.getFactHandle(exam);
+ workingMemory.modifyRetract(factHandle);
exam.setRoom(room);
- workingMemory.update(workingMemory.getFactHandle(exam), exam);
+ workingMemory.modifyInsert(factHandle, exam);
}
public static void moveExam(WorkingMemory workingMemory, Exam exam, Period period, Room room) {
+ FactHandle factHandle = workingMemory.getFactHandle(exam);
+ workingMemory.modifyRetract(factHandle);
exam.setPeriod(period);
exam.setRoom(room);
- workingMemory.update(workingMemory.getFactHandle(exam), exam);
+ workingMemory.modifyInsert(factHandle, exam);
movePeriodCoincidene(workingMemory, exam, period);
}
@@ -32,8 +39,10 @@
if (exam.getExamCoincidence() != null) {
for (Exam coincidenceExam : exam.getExamCoincidence().getCoincidenceExamSet()) {
if (!exam.equals(coincidenceExam)) {
+ FactHandle factHandle = workingMemory.getFactHandle(coincidenceExam);
+ workingMemory.modifyRetract(factHandle);
coincidenceExam.setPeriod(period);
- workingMemory.update(workingMemory.getFactHandle(coincidenceExam), coincidenceExam);
+ workingMemory.modifyInsert(factHandle, coincidenceExam);
}
}
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/solution/initializer/ExaminationStartingSolutionInitializer.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/solution/initializer/ExaminationStartingSolutionInitializer.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/solver/solution/initializer/ExaminationStartingSolutionInitializer.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -10,7 +10,7 @@
import org.apache.commons.lang.builder.CompareToBuilder;
import org.drools.FactHandle;
-import org.drools.StatefulSession;
+import org.drools.WorkingMemory;
import org.drools.solver.core.evaluation.EvaluationHandler;
import org.drools.solver.core.solution.initializer.AbstractStartingSolutionInitializer;
import org.drools.solver.examples.common.domain.PersistableIdComparator;
@@ -43,7 +43,7 @@
List<Exam> examList = new ArrayList<Exam>(examination.getTopicList().size());
examination.setExamList(examList);
evaluationHandler.setSolution(examination);
- StatefulSession statefulSession = evaluationHandler.getStatefulSession();
+ WorkingMemory workingMemory = evaluationHandler.getStatefulSession();
List<ExamInitialWeight> examInitialWeightList = createExamAssigningScoreList(examination);
@@ -64,14 +64,16 @@
List<PeriodScoring> periodScoringList = new ArrayList<PeriodScoring>(periodList.size());
for (Period period : periodList) {
for (ExamToHandle examToHandle : examToHandleList) {
- examToHandle.getExam().setPeriod(period);
if (examToHandle.getExamHandle() == null) {
- examToHandle.setExamHandle(statefulSession.insert(examToHandle.getExam()));
+ examToHandle.getExam().setPeriod(period);
+ examToHandle.setExamHandle(workingMemory.insert(examToHandle.getExam()));
if (examToHandle.getExam().isCoincidenceLeader()) {
leaderHandle = examToHandle.getExamHandle();
}
} else {
- statefulSession.update(examToHandle.getExamHandle(), examToHandle.getExam());
+ workingMemory.modifyRetract(examToHandle.getExamHandle());
+ examToHandle.getExam().setPeriod(period);
+ workingMemory.modifyInsert(examToHandle.getExamHandle(), examToHandle.getExam());
}
}
double score = evaluationHandler.fireAllRulesAndCalculateStepScore();
@@ -79,7 +81,7 @@
}
Collections.sort(periodScoringList);
- scheduleLeader(periodScoringList, roomList, evaluationHandler, statefulSession, unscheduledScore,
+ scheduleLeader(periodScoringList, roomList, evaluationHandler, workingMemory, unscheduledScore,
examToHandleList, leader, leaderHandle);
examList.add(leader);
@@ -88,7 +90,7 @@
Exam exam = examToHandle.getExam();
// Leader already has a room
if (!exam.isCoincidenceLeader()) {
- scheduleNonLeader(roomList, evaluationHandler, statefulSession, exam, examToHandle.getExamHandle());
+ scheduleNonLeader(roomList, evaluationHandler, workingMemory, exam, examToHandle.getExamHandle());
examList.add(exam);
}
}
@@ -98,7 +100,7 @@
}
private void scheduleLeader(List<PeriodScoring> periodScoringList, List<Room> roomList,
- EvaluationHandler evaluationHandler, StatefulSession statefulSession, double unscheduledScore,
+ EvaluationHandler evaluationHandler, WorkingMemory workingMemory, double unscheduledScore,
List<ExamToHandle> examToHandleList, Exam leader, FactHandle leaderHandle) {
boolean perfectMatch = false;
double bestScore = Double.NEGATIVE_INFINITY;
@@ -110,12 +112,14 @@
break;
}
for (ExamToHandle examToHandle : examToHandleList) {
+ workingMemory.modifyRetract(examToHandle.getExamHandle());
examToHandle.getExam().setPeriod(periodScoring.getPeriod());
- statefulSession.update(examToHandle.getExamHandle(), examToHandle.getExam());
+ workingMemory.modifyInsert(examToHandle.getExamHandle(), examToHandle.getExam());
}
for (Room room : roomList) {
+ workingMemory.modifyRetract(leaderHandle);
leader.setRoom(room);
- statefulSession.update(leaderHandle, leader);
+ workingMemory.modifyInsert(leaderHandle, leader);
double score = evaluationHandler.fireAllRulesAndCalculateStepScore();
if (score < unscheduledScore) {
if (score > bestScore) {
@@ -140,17 +144,20 @@
throw new IllegalStateException("The bestPeriod (" + bestPeriod + ") or the bestRoom ("
+ bestRoom + ") cannot be null.");
}
+ workingMemory.modifyRetract(leaderHandle);
leader.setRoom(bestRoom);
+ workingMemory.modifyInsert(leaderHandle, leader);
for (ExamToHandle examToHandle : examToHandleList) {
+ workingMemory.modifyRetract(examToHandle.getExamHandle());
examToHandle.getExam().setPeriod(bestPeriod);
- statefulSession.update(examToHandle.getExamHandle(), examToHandle.getExam());
+ workingMemory.modifyInsert(examToHandle.getExamHandle(), examToHandle.getExam());
}
}
logger.debug(" Exam ({}) initialized for starting solution.", leader);
}
private void scheduleNonLeader(List<Room> roomList,
- EvaluationHandler evaluationHandler, StatefulSession statefulSession,
+ EvaluationHandler evaluationHandler, WorkingMemory workingMemory,
Exam exam, FactHandle examHandle) {
if (exam.getRoom() != null) {
throw new IllegalStateException("Exam (" + exam + ") already has a room.");
@@ -160,8 +167,9 @@
double bestScore = Double.NEGATIVE_INFINITY;
Room bestRoom = null;
for (Room room : roomList) {
+ workingMemory.modifyRetract(examHandle);
exam.setRoom(room);
- statefulSession.update(examHandle, exam);
+ workingMemory.modifyInsert(examHandle, exam);
double score = evaluationHandler.fireAllRulesAndCalculateStepScore();
if (score < unscheduledScore) {
if (score > bestScore) {
@@ -181,8 +189,9 @@
throw new IllegalStateException("The bestRoom ("
+ bestRoom + ") cannot be null.");
}
+ workingMemory.modifyRetract(examHandle);
exam.setRoom(bestRoom);
- statefulSession.update(examHandle, exam);
+ workingMemory.modifyInsert(examHandle, exam);
}
logger.debug(" Exam ({}) initialized for starting solution. *", exam);
}
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/solver/move/TimeslotChangeMove.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -36,8 +36,9 @@
public void doMove(WorkingMemory workingMemory) {
FactHandle lessonHandle = workingMemory.getFactHandle(lesson);
+ workingMemory.modifyRetract(lessonHandle);
lesson.setTimeslot(toTimeslot);
- workingMemory.update(lessonHandle, lesson);
+ workingMemory.modifyInsert(lessonHandle, lesson);
}
public Collection<? extends Object> getTabuProperties() {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/solver/move/YChangeMove.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -34,8 +34,9 @@
public void doMove(WorkingMemory workingMemory) {
FactHandle queenHandle = workingMemory.getFactHandle(queen);
+ workingMemory.modifyRetract(queenHandle); // before changes are made
queen.setY(toY);
- workingMemory.update(queenHandle, queen);
+ workingMemory.modifyInsert(queenHandle, queen); // after changes are made
}
public Collection<? extends Object> getTabuProperties() {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/simple/move/DayChangeMove.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -36,8 +36,9 @@
public void doMove(WorkingMemory workingMemory) {
FactHandle matchHandle = workingMemory.getFactHandle(match);
+ workingMemory.modifyRetract(matchHandle);
match.setDay(toDay);
- workingMemory.update(matchHandle, match);
+ workingMemory.modifyInsert(matchHandle, match);
}
public Collection<? extends Object> getTabuProperties() {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MatchSwapMove.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -34,13 +34,15 @@
}
public void doMove(WorkingMemory workingMemory) {
+ Day oldFirstMatchDay = firstMatch.getDay();
FactHandle firstMatchHandle = workingMemory.getFactHandle(firstMatch);
FactHandle secondMatchHandle = workingMemory.getFactHandle(secondMatch);
- Day oldFirstMatchDay = firstMatch.getDay();
+ workingMemory.modifyRetract(firstMatchHandle);
+ workingMemory.modifyRetract(secondMatchHandle);
firstMatch.setDay(secondMatch.getDay());
secondMatch.setDay(oldFirstMatchDay);
- workingMemory.update(firstMatchHandle, firstMatch);
- workingMemory.update(secondMatchHandle, secondMatch);
+ workingMemory.modifyInsert(firstMatchHandle, firstMatch);
+ workingMemory.modifyInsert(secondMatchHandle, secondMatch);
}
public Collection<? extends Object> getTabuProperties() {
Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java 2008-02-24 12:17:10 UTC (rev 18570)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/solver/smart/move/MultipleMatchListRotateMove.java 2008-02-24 13:04:38 UTC (rev 18571)
@@ -55,13 +55,15 @@
while (it.hasNext()) {
secondMatch = it.next();
FactHandle firstMatchHandle = workingMemory.getFactHandle(firstMatch);
+ workingMemory.modifyRetract(firstMatchHandle);
firstMatch.setDay(secondMatch.getDay());
- workingMemory.update(firstMatchHandle, firstMatch);
+ workingMemory.modifyInsert(firstMatchHandle, firstMatch);
firstMatch = secondMatch;
}
FactHandle secondMatchHandle = workingMemory.getFactHandle(firstMatch);
+ workingMemory.modifyRetract(secondMatchHandle);
secondMatch.setDay(startDay);
- workingMemory.update(secondMatchHandle, secondMatch);
+ workingMemory.modifyInsert(secondMatchHandle, secondMatch);
}
public Collection<? extends Object> getTabuProperties() {
More information about the jboss-svn-commits
mailing list