[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