[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