[jboss-svn-commits] JBL Code SVN: r16311 - in labs/jbossrules/trunk/drools-solver: drools-solver-examples/data/itc2007/examination/unsolved and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Nov 4 08:54:18 EST 2007


Author: ge0ffrey
Date: 2007-11-04 08:54:17 -0500 (Sun, 04 Nov 2007)
New Revision: 16311

Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/simulatedannealing/SimulatedAnnealingAccepter.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/data/itc2007/examination/unsolved/constraint_test_set.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/Topic.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/swingui/ExaminationPanel.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/swingui/LessonSchedulePanel.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/swingui/NQueensPanel.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/swingui/TravelingTournamentPanel.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/common/app/log4j.xml
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl
Log:
examination hard constraints + dialog location

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/simulatedannealing/SimulatedAnnealingAccepter.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/simulatedannealing/SimulatedAnnealingAccepter.java	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-core/src/main/java/org/drools/solver/core/localsearch/decider/accepter/simulatedannealing/SimulatedAnnealingAccepter.java	2007-11-04 13:54:17 UTC (rev 16311)
@@ -35,11 +35,12 @@
                 ? localSearchSolver.getBestScore()
                 : localSearchSolver.getStepScore();
         double scoreDelta = score - compareScore;
-        if (scoreDelta >= 0) {
+        if (scoreDelta > 0.0) { // TODO if scoreDelta 0 then it will end up 1.0 anyway?
             return 1.0;
         } else {
             double acceptChance = Math.exp(scoreDelta * cachedAcceptChancePart);
-            return Math.min(acceptChance, 1.0);
+            // Math.min(acceptChance, 1.0) is oboselete because scoreDelta <= 0.0
+            return acceptChance;
         }
     }
     

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/data/itc2007/examination/unsolved/constraint_test_set.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/data/itc2007/examination/unsolved/constraint_test_set.xml	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/data/itc2007/examination/unsolved/constraint_test_set.xml	2007-11-04 13:54:17 UTC (rev 16311)
@@ -23,7 +23,7 @@
   <topicList id="4">
     <org.drools.solver.examples.itc2007.examination.domain.Topic id="40">
       <id>0</id>
-      <duration>195</duration>
+      <duration>210</duration>
       <studentList id="7889">
         <org.drools.solver.examples.itc2007.examination.domain.Student reference="30"/>
         <org.drools.solver.examples.itc2007.examination.domain.Student reference="31"/>
@@ -61,7 +61,7 @@
       <startDateTimeString>15:04:2005 14:00:00</startDateTimeString>
       <dateInDays>1931</dateInDays>
       <startTimeInMinutes>840</startTimeInMinutes>
-      <durationInMinutes>210</durationInMinutes>
+      <durationInMinutes>150</durationInMinutes>
       <penalty>0</penalty>
     </org.drools.solver.examples.itc2007.examination.domain.Period>
     <org.drools.solver.examples.itc2007.examination.domain.Period id="52">
@@ -69,19 +69,19 @@
       <startDateTimeString>18:04:2005 09:30:00</startDateTimeString>
       <dateInDays>1933</dateInDays>
       <startTimeInMinutes>570</startTimeInMinutes>
-      <durationInMinutes>210</durationInMinutes>
+      <durationInMinutes>150</durationInMinutes>
       <penalty>0</penalty>
     </org.drools.solver.examples.itc2007.examination.domain.Period>
   </periodList>
   <roomList id="6">
     <org.drools.solver.examples.itc2007.examination.domain.Room id="60">
       <id>0</id>
-      <capacity>260</capacity>
+      <capacity>10</capacity>
       <penalty>0</penalty>
     </org.drools.solver.examples.itc2007.examination.domain.Room>
     <org.drools.solver.examples.itc2007.examination.domain.Room id="61">
       <id>1</id>
-      <capacity>100</capacity>
+      <capacity>2</capacity>
       <penalty>0</penalty>
     </org.drools.solver.examples.itc2007.examination.domain.Room>
   </roomList>
@@ -98,19 +98,19 @@
       <id>0</id>
       <topic reference="40"/>
       <period reference="50"/>
-      <room reference="60"/>
+      <room reference="61"/>
     </org.drools.solver.examples.itc2007.examination.domain.Exam>
     <org.drools.solver.examples.itc2007.examination.domain.Exam id="71">
       <id>1</id>
       <topic reference="41"/>
-      <period reference="50"/>
-      <room reference="60"/>
+      <period reference="51"/>
+      <room reference="61"/>
     </org.drools.solver.examples.itc2007.examination.domain.Exam>
     <org.drools.solver.examples.itc2007.examination.domain.Exam id="72">
       <id>2</id>
       <topic reference="42"/>
-      <period reference="50"/>
-      <room reference="61"/>
+      <period reference="52"/>
+      <room reference="60"/>
     </org.drools.solver.examples.itc2007.examination.domain.Exam>
   </examList>
 </org.drools.solver.examples.itc2007.examination.domain.Examination>
\ 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/Topic.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/Topic.java	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/domain/Topic.java	2007-11-04 13:54:17 UTC (rev 16311)
@@ -29,6 +29,10 @@
         this.studentList = studentList;
     }
 
+    public int getStudentListSize() {
+        return studentList.size();
+    }
+
     public int compareTo(Topic other) {
         return new CompareToBuilder()
                 .append(id, other.id)
@@ -36,7 +40,7 @@
     }
 
     public String toString() {
-        return id + " {" + duration + ", " + studentList.size() + "}";
+        return id + " {" + duration + ", " + getStudentListSize() + "}";
     }
 
 }

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/swingui/ExaminationPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/swingui/ExaminationPanel.java	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/itc2007/examination/swingui/ExaminationPanel.java	2007-11-04 13:54:17 UTC (rev 16311)
@@ -120,8 +120,8 @@
             JComboBox roomListField = new JComboBox(roomList.toArray());
             roomListField.setSelectedItem(exam.getRoom());
             listFieldsPanel.add(roomListField);
-            int result = JOptionPane.showConfirmDialog(ExaminationPanel.this, listFieldsPanel, "Select period and room",
-                    JOptionPane.OK_CANCEL_OPTION);
+            int result = JOptionPane.showConfirmDialog(ExaminationPanel.this.getRootPane(), listFieldsPanel,
+                    "Select period and room", JOptionPane.OK_CANCEL_OPTION);
             if (result == JOptionPane.OK_OPTION) {
                 Period toPeriod = (Period) periodListField.getSelectedItem();
                 solutionBusiness.doMove(new PeriodChangeMove(exam, toPeriod));

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/swingui/LessonSchedulePanel.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/swingui/LessonSchedulePanel.java	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/lessonschedule/swingui/LessonSchedulePanel.java	2007-11-04 13:54:17 UTC (rev 16311)
@@ -80,8 +80,8 @@
             List<Timeslot> timeslotList = getLessonSchedule().getTimeslotList();
             JComboBox timeslotListField = new JComboBox(timeslotList.toArray());
             timeslotListField.setSelectedItem(lesson.getTimeslot());
-            int result = JOptionPane.showConfirmDialog(LessonSchedulePanel.this, timeslotListField, "Select timeslot",
-                    JOptionPane.OK_CANCEL_OPTION);
+            int result = JOptionPane.showConfirmDialog(LessonSchedulePanel.this.getRootPane(), timeslotListField,
+                    "Select timeslot", JOptionPane.OK_CANCEL_OPTION);
             if (result == JOptionPane.OK_OPTION) {
                 Timeslot toTimeslot = (Timeslot) timeslotListField.getSelectedItem();
                 Move move = new TimeslotChangeMove(lesson, toTimeslot);

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/swingui/NQueensPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/swingui/NQueensPanel.java	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/nqueens/swingui/NQueensPanel.java	2007-11-04 13:54:17 UTC (rev 16311)
@@ -80,7 +80,7 @@
             List<Integer> yList = getNQueens().createNList();
             JComboBox yListField = new JComboBox(yList.toArray());
             yListField.setSelectedItem(queen.getY());
-            int result = JOptionPane.showConfirmDialog(NQueensPanel.this, yListField, "Select y",
+            int result = JOptionPane.showConfirmDialog(NQueensPanel.this.getRootPane(), yListField, "Select y",
                     JOptionPane.OK_CANCEL_OPTION);
             if (result == JOptionPane.OK_OPTION) {
                 int toY = (Integer) yListField.getSelectedItem();

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/swingui/TravelingTournamentPanel.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/swingui/TravelingTournamentPanel.java	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/travelingtournament/swingui/TravelingTournamentPanel.java	2007-11-04 13:54:17 UTC (rev 16311)
@@ -80,8 +80,8 @@
             List<Day> dayList = getTravelingTournament().getDayList();
             JComboBox dayListField = new JComboBox(dayList.toArray());
             dayListField.setSelectedItem(match.getDay());
-            int result = JOptionPane.showConfirmDialog(TravelingTournamentPanel.this, dayListField, "Select day",
-                    JOptionPane.OK_CANCEL_OPTION);
+            int result = JOptionPane.showConfirmDialog(TravelingTournamentPanel.this.getRootPane(), dayListField,
+                    "Select day", JOptionPane.OK_CANCEL_OPTION);
             if (result == JOptionPane.OK_OPTION) {
                 Day toDay = (Day) dayListField.getSelectedItem();
                 Move move = new DayChangeMove(match, toDay);

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/common/app/log4j.xml
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/common/app/log4j.xml	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/common/app/log4j.xml	2007-11-04 13:54:17 UTC (rev 16311)
@@ -11,7 +11,7 @@
     </appender>
 
     <category name="org.drools.solver">
-        <priority value="info" />
+        <priority value="debug" />
     </category>
 
     <root>

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2007-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2007-11-04 13:54:17 UTC (rev 16311)
@@ -17,20 +17,40 @@
 
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
-//Conflicts: Two conflicting exams in the same period.
+// Two exams in the same period which share students.
 rule "conflictingExamsInSamePeriod"
   when
     $student : Student();
     $exam : Exam($id : id, topic.studentList contains $student, $period : period);
-    Exam(id > $id, topic.studentList contains $student, period == $period);
+    Exam(period == $period, id > $id, topic.studentList contains $student);
   then
     insertLogical(new WorkaroundMultiplePatternAccumulate("conflictingExamsInSamePeriod", $exam));
 end
 
-//RoomOccupancy: More seating required in any individual period than that available.
+// More time required during a period than available in that period.
+rule "periodDurationTooShort"
+  when
+    $exam : Exam($periodDuration : period.durationInMinutes, topic.duration > $periodDuration);
+  then
+    insertLogical(new WorkaroundMultiplePatternAccumulate("periodDurationTooShort", $exam));
+end
+
+// More seating required during a period in a room than available in that room.
+rule "roomCapacityTooSmall"
+  when
+    $period : Period();
+    $room : Room($capacity : capacity);
+    $totalStudentListSize : Number() from accumulate(
+      Exam(period == $period, room == $room, $studentListSize : topic.studentListSize),
+      // sumInteger($studentListSize) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075
+      sum($studentListSize)
+    );
+    eval($totalStudentListSize.intValue() > $capacity);
+  then
+    insertLogical(new WorkaroundMultiplePatternAccumulate("roomCapacityTooSmall", $room)); // TODO FIXME, use $period too
+end
+
 //
-//PeriodUtilisation: More time required in any individual period than that available.
-//
 //PeriodRelated: Ordering requirements not obeyed.
 //
 //RoomRelated: Room requirements not obeyed

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-11-04 12:15:42 UTC (rev 16310)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl	2007-11-04 13:54:17 UTC (rev 16311)
@@ -112,9 +112,9 @@
   salience -1 // Finish the other rules first (optional, for performance)
   when
     $totalDistance : Number() from accumulate(
-       Hop($distance : distance),
-       // sumInteger($distance) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075
-       sum($distance) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075
+      Hop($distance : distance),
+      // sumInteger($distance) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075
+      sum($distance) // Vote for http://jira.jboss.com/jira/browse/JBRULES-1075
     );
   then
     scoreCalculator.setSoftConstraintsBroken($totalDistance.intValue());




More information about the jboss-svn-commits mailing list