[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