[jboss-svn-commits] JBL Code SVN: r27236 - in labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main: java/org/drools/solver/examples/patientadmissionschedule/domain/solver and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Jun 28 08:55:58 EDT 2009


Author: ge0ffrey
Date: 2009-06-28 08:55:57 -0400 (Sun, 28 Jun 2009)
New Revision: 27236

Modified:
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/BedDesignation.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/solver/AdmissionPartConflict.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/solution/initializer/PatientAdmissionScheduleStartingSolutionInitializer.java
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl
   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/lessonschedule/solver/lessonScheduleScoreRules.drl
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/manners2009/solver/manners2009ScoreRules.drl
   labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleScoreRules.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:
pas: sameGender limitation

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/BedDesignation.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/BedDesignation.java	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/BedDesignation.java	2009-06-28 12:55:57 UTC (rev 27236)
@@ -81,4 +81,8 @@
         return admissionPart + " @ " + bed;
     }
 
+    public Room getRoom() {
+        return bed.getRoom();
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/solver/AdmissionPartConflict.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/solver/AdmissionPartConflict.java	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/domain/solver/AdmissionPartConflict.java	2009-06-28 12:55:57 UTC (rev 27236)
@@ -80,4 +80,8 @@
         return leftAdmissionPart + " & " + rightAdmissionPart + " = " + nightSize;
     }
 
+    public boolean isDifferentGender() {
+        return leftAdmissionPart.getPatient().getGender() != rightAdmissionPart.getPatient().getGender();
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/solution/initializer/PatientAdmissionScheduleStartingSolutionInitializer.java
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/solution/initializer/PatientAdmissionScheduleStartingSolutionInitializer.java	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/java/org/drools/solver/examples/patientadmissionschedule/solver/solution/initializer/PatientAdmissionScheduleStartingSolutionInitializer.java	2009-06-28 12:55:57 UTC (rev 27236)
@@ -67,6 +67,8 @@
                         }
                     } else if (score.equals(unscheduledScore)) {
                         perfectMatch = true;
+                        bestScore = score;
+                        bestBed = bed;
                         break;
                     } else {
                         throw new IllegalStateException("The score (" + score
@@ -77,14 +79,17 @@
                     break;
                 }
             }
+            if (bestBed == null) {
+                throw new IllegalStateException("The bestBed (" + bestBed + ") cannot be null.");
+            }
             if (!perfectMatch) {
-                if (bestBed == null) {
-                    throw new IllegalStateException("The bestBed (" + bestBed + ") cannot be null.");
-                }
                 workingMemory.modifyRetract(bedDesignationHandle);
                 bedDesignation.setBed(bestBed);
                 workingMemory.modifyInsert(bedDesignationHandle, bedDesignation);
             }
+            // put the occupied bed at the end of the list
+            bedList.remove(bestBed);
+            bedList.add(bestBed);
         }
         // For the GUI's combobox list mainly, not really needed
         Collections.sort(bedDesignationList, new PersistableIdComparator());

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/curriculumcourse/solver/curriculumCourseScoreRules.drl	2009-06-28 12:55:57 UTC (rev 27236)
@@ -16,6 +16,8 @@
 import org.drools.solver.examples.itc2007.curriculumcourse.domain.Timeslot;
 import org.drools.solver.examples.itc2007.curriculumcourse.domain.UnavailablePeriodConstraint;
 
+// @author Geoffrey De Smet
+
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
 // ############################################################################

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	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/itc2007/examination/solver/examinationScoreRules.drl	2009-06-28 12:55:57 UTC (rev 27236)
@@ -18,6 +18,8 @@
 import org.drools.solver.examples.itc2007.examination.domain.Topic;
 import org.drools.solver.examples.itc2007.examination.domain.solver.TopicConflict;
 
+// @author Geoffrey De Smet
+
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
 // ############################################################################

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	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/lessonschedule/solver/lessonScheduleScoreRules.drl	2009-06-28 12:55:57 UTC (rev 27236)
@@ -10,6 +10,8 @@
 import org.drools.solver.examples.lessonschedule.domain.Group;
 import org.drools.solver.examples.lessonschedule.domain.Lesson;
 
+// @author Geoffrey De Smet
+
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
 // ############################################################################

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/manners2009/solver/manners2009ScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/manners2009/solver/manners2009ScoreRules.drl	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/manners2009/solver/manners2009ScoreRules.drl	2009-06-28 12:55:57 UTC (rev 27236)
@@ -16,6 +16,8 @@
 import org.drools.solver.examples.manners2009.domain.SeatDesignation;
 import org.drools.solver.examples.manners2009.domain.Table;
 
+// @author Geoffrey De Smet
+
 global SimpleScoreCalculator scoreCalculator;
 
 // ############################################################################

Modified: labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleScoreRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleScoreRules.drl	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/patientadmissionschedule/solver/patientAdmissionScheduleScoreRules.drl	2009-06-28 12:55:57 UTC (rev 27236)
@@ -24,24 +24,42 @@
 import org.drools.solver.examples.patientadmissionschedule.domain.Specialism;
 import org.drools.solver.examples.patientadmissionschedule.domain.solver.AdmissionPartConflict;
 
+// @author Geoffrey De Smet
+
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
 // ############################################################################
 // Hard constraints
 // ############################################################################
 
-// Two admissionParts in the same bed for a number of nights.
-rule "conflictingBedDesignationInSameNight"
+// Two patients in the same bed for a number of nights.
+rule "sameBedInSameNight"
     when
-        $admissionPartConflict : AdmissionPartConflict($leftAdmissionPart : leftAdmissionPart, $rightAdmissionPart : rightAdmissionPart);
+        $admissionPartConflict : AdmissionPartConflict($leftAdmissionPart : leftAdmissionPart,
+                $rightAdmissionPart : rightAdmissionPart);
         $leftBedDesignation : BedDesignation(admissionPart == $leftAdmissionPart, $bed : bed);
         $rightBedDesignation : BedDesignation(admissionPart == $rightAdmissionPart, bed == $bed);
     then
-        insertLogical(new IntConstraintOccurrence("conflictingBedDesignationInSameNight", ConstraintType.NEGATIVE_HARD,
+        insertLogical(new IntConstraintOccurrence("sameBedInSameNight", ConstraintType.NEGATIVE_HARD,
                 $admissionPartConflict.getNightSize(),
                 $leftBedDesignation, $rightBedDesignation));
 end
 
+// Two admissionParts in the same bed for a number of nights.
+rule "differentGenderInSameGenderRoomInSameNight"
+    when
+        $room : Room(genderLimitation == GenderLimitation.SAME_GENDER);
+        $admissionPartConflict : AdmissionPartConflict($leftAdmissionPart : leftAdmissionPart,
+                $rightAdmissionPart : rightAdmissionPart,
+                differentGender == true);
+        $leftBedDesignation : BedDesignation(admissionPart == $leftAdmissionPart, room == $room);
+        $rightBedDesignation : BedDesignation(admissionPart == $rightAdmissionPart, room == $room);
+    then
+        insertLogical(new IntConstraintOccurrence("differentGenderInSameGenderRoomInSameNight", ConstraintType.NEGATIVE_HARD,
+                $admissionPartConflict.getNightSize(),
+                $leftBedDesignation, $rightBedDesignation));
+end
+
 // Accumulate hard constraints
 rule "hardConstraintsBroken"
         salience -1 // Finish the other rules first (optional, for performance)

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	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/simple/simpleTravelingTournamentScoreRules.drl	2009-06-28 12:55:57 UTC (rev 27236)
@@ -11,6 +11,8 @@
 import org.drools.solver.examples.travelingtournament.domain.TravelingTournament;
 import org.drools.solver.examples.travelingtournament.domain.solver.Hop;
 
+// @author Geoffrey De Smet
+
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
 // ############################################################################

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	2009-06-28 12:08:21 UTC (rev 27235)
+++ labs/jbossrules/trunk/drools-solver/drools-solver-examples/src/main/resources/org/drools/solver/examples/travelingtournament/solver/smart/smartTravelingTournamentScoreRules.drl	2009-06-28 12:55:57 UTC (rev 27236)
@@ -11,6 +11,8 @@
 import org.drools.solver.examples.travelingtournament.domain.TravelingTournament;
 import org.drools.solver.examples.travelingtournament.domain.solver.Hop;
 
+// @author Geoffrey De Smet
+
 global HardAndSoftConstraintScoreCalculator scoreCalculator;
 
 // ############################################################################




More information about the jboss-svn-commits mailing list